Я использую Kotlin, Spring Boot 2.0.4 и Thymeleaf для создания учебного проекта.
Суть этого проста:
Сначала showForm () заполняет модель параметрами ввода и возвращает представление:
@GetMapping
fun showForm(model: Model): String {
model.addAttribute(
"options",
listOf(
Option("1", "Option 1"),
Option("2", "Option 2")
)
)
model.addAttribute("design", Design()) // This will be used for th:object
return "form"
}
Во-вторых, представление генерирует флажки для опций:
<form method="POST" th:object="${design}">
...
<div th:each="option: ${options}">
<input type="checkbox" name="options" th:value="${option.id}" />
...
</div>
...
</form>
Наконец, контроллер проверяет отправленную форму и, если есть ошибки, возвращает исходную форму:
@PostMapping
fun processForm(@Valid design: Design, result: BindingResult): String {
if (result.hasErrors()) {
return "form"
}
return "redirect:/somewhere/else"
}
Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда Spring возвращает мне ошибки, флажки моих опций исчезают. Мне кажется, что атрибуты модели, похоже, утрачены.
И если я попытаюсь заполнить модель атрибутами перед отправкой с ошибками, сами ошибки будут потеряны.
Как реализовать проверку, чтобы атрибуты и ошибки модели сохранялись, несмотря на ошибки проверки?