Как отправить значение enum на сервер?

344
05 марта 2019, 09:00

Команда состоит из 3 параметров: Integer id, time, channel (enum: abc/cba) param.

Param для abc: "abc:...";

Param для cba: "cba:...";

Сервер принимает команду и кладет в очередь указанным каналом.

Такое вот задание, не пойму поле channel должно принимать оба канала? или нужно для него 2-ое поле ввода (в html). И как передать значение enum, у меня вылетает ошибка :

Failed to convert value of type 'java.lang.String' to required type 'java.lang.Enum'; nested exception is java.lang.IllegalArgumentException: The target type java.lang.Enum does not refer to an enum;

Конструктор

public Com(Integer id, String time, Enum<Params> param)
    {
        this.id = id;
        this.time = time;
        this.param = param;
    }

enum

public enum Params
{
    abc, cba;
}

Mapping

@PostMapping
    public String add(@RequestParam Integer id,
                      @RequestParam String time,
                      @RequestParam Enum<Params> params,
                      Model model)
    {
        Com com = new Com(id, time, params);
        comRepo.save(com);
        Iterable<Com> coms = comRepo.findAll();
        model.put("coms", coms);
        return "com";
    }

html

<form method="post">
        <input type="text" name="id" placeholder="id">
        <input type="text" name="time" placeholder="time">
        <input type="text" name="params" placeholder="channel">
        <button type="submit">Отправить</button>
</form>
Answer 1

Можно принимать параметром String ,а затем использовать Params.valueOf() на нужной части строки.

    @PostMapping
    public String add(@RequestParam Integer id,
                      @RequestParam String time,
                      @RequestParam String param,
                      Model model)
    {
        Com com = new Com(id, time, Params.valueOf(param.substring(0,2));
        comRepo.save(com);
        Iterable<Com> coms = comRepo.findAll();
        model.put("coms", coms);
        return "com";
    }
READ ALSO
Module &#39;Name&#39; is imported from Gradle

Module 'Name' is imported from Gradle

Хочу импортировать библиотеку jsoup, но при импорте пишет:

192
Как сохранить заряд батареи Android-устройства (программно)?

Как сохранить заряд батареи Android-устройства (программно)?

Есть устройствоДнем оно питается от сети, а ночью сеть выключают

146
Spring H2 Embedded, при тестировании не найдены sql файлы

Spring H2 Embedded, при тестировании не найдены sql файлы

Я использую для теста репозитория такой стартовый код:

223
Как убрать подсвечивание checkbox на ios?

Как убрать подсвечивание checkbox на ios?

Как убрать стандартное подсвечивание checkbox на ios?

184