Я создаю раскрывающийся список на основе значений из перечисления, затем пытаюсь вернуть значение, используя 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
Цвет и тип - перечисления,Все остальные запросы возвращают правильное значение, например, для текстового поля. Есть идеи, почему этот ведет себя по-другому?