Вы отправляете вашу fiatCurrency в качестве параметра запроса, а не тела запроса.Spring имеет мощный механизм для отображения формы представления на реальный объект.Этот объект будет отправлен как @ModelAttribute
и будет добавлен в модель до загрузки представления.
Ваша форма будет:
<form th:action="@{/values/fiatCurrency}" th:object="${fiat}" method="post">
<select th:field="*{fiatCurrency}" onchange="this.form.submit()">
<option id="USD" th:value="USD" th:text="USD"></option>
<option id="EUR" th:value="EUR" th:text="EUR"></option>
<option id="CNY" th:value="CNY" th:text="CNY"></option>
</select>
</form>
Следующим шагом будет создание классаFiat, чтобы обернуть нужные данные:
public class Fiat {
private String fiatCurrency;
//getters and setters
}
Объект Fiat должен быть добавлен в модель, прежде чем будет предоставлен вид.Простое и элегантное решение - определить новый метод в вашем контроллере:
@ModelAttribute
public void addModelAttribute(Map<String, Object> model) {
model.put("fiat", new Fiat());
}
Ваш метод записи получит вновь созданный объект:
@PostMapping(value = "/values/fiatCurrency")
public String choseCurrency(Model model,
@ModelAttribute Fiat fiat) {
//..
return "index";
}