Динамически создаваемый выпадающий список не возвращает значение - PullRequest
0 голосов
/ 23 октября 2019

Я создаю раскрывающийся список на основе значений из перечисления, затем пытаюсь вернуть значение, используя th: value = "$ {parameterName}", как и для других полей, но возвращаемое значение равно нулю.

Метод получения контроллера:

@GetMapping("/createorupdatebusvehicle/{id}")
public String createBusVehicleDisplay(Model model, @PathVariable(value = "id") long id, HttpServletResponse response) throws IOException {
    BusVehicle busVehicle = busVehicleRepository.findById(id).get();
    if(busVehicle == null){
        response.sendRedirect("/createorupdatebusvehicle");
        return null;
    }

    model.addAttribute("busVehicleId", id);
   model.addAttribute("busVehicleColor", busVehicle.getColor().toString());
    model.addAttribute("busVehicleType", busVehicle.getType().toString());
// all attributes are set

    return "createOrUpdateBusVehicle";
}

Просмотр страницы:

<form action="#" th:action="@{/createorupdatebusvehicle}" method="post">
<input type="hidden" name="busVehicleId" th:value="${busVehicleId}" />
<p>Plate number: <input type="text" name="busVehiclePlateNumber" th:value="${busVehiclePlateNumber}" /></p>
<p>Passenger capacity: <input type="text" name="busVehiclePassengerCapacity" th:value="${busVehiclePassengerCapacity}" /></p>

//== Here are the selects ==

<select name="color">
    <option th:each="colorOpt : ${T(com.grazzini.model.BusVehicleColor).values()}"
            th:value="${busVehicleColor}" th:text="${colorOpt}" th:selected="${busVehicleColor} == colorOpt"></option>
</select>

<select name="type">
    <option th:each="typeOpt : ${T(com.grazzini.model.BusVehicleType).values()}"
            th:value="${busVehicleType}" th:text="${typeOpt}" th:selected="${busVehicleType} == typeOpt"></option>
</select>

Затем верните выбранное значение обратно в контроллер:

@PostMapping("/createorupdatebusvehicle")
public String checkAndCreateBusVehicle (HttpServletRequest request, HttpServletResponse response) throws IOException {
    String busVehicleId = request.getParameter("busVehicleId");
//...
    String busVehicleColor = request.getParameter("busVehicleColor"); //null
    String busVehicleType = request.getParameter("busVehicleType"); //null

/// the rest

Цвет и тип - перечисления,Все остальные запросы возвращают правильное значение, например, для текстового поля. Есть идеи, почему этот ведет себя по-другому?

1 Ответ

0 голосов
/ 24 октября 2019

У вас есть name="..." на полях, которые работают. Вам нужно добавить name="busVehicleColor" и name="busVehicleType" в соответствующие теги <select /> ..

...