Проверка ввода внутри thymeleaf: объекта в контроллере загрузки spring

Я использую 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"
}

Во-вторых, view генерирует флажки для опций:

<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 возвращает меня с ошибками, мои флажки опций исчезают. Мне кажется, что атрибуты модели теряются.

И если я попытаюсь повторно заполнить модель атрибутами перед отправкой обратно с ошибками, сами ошибки будут потеряны.

Как реализовать проверку, чтобы атрибуты модели и ошибки сохранялись, несмотря на ошибки проверки?

Если есть ошибки, только добавьте options обратно в модель. Не добавляйте design.

Metroids 10.09.2018 17:00

@Metroids Это сработало, спасибо.

CBlew 13.09.2018 19:24
0
2
75
0

Другие вопросы по теме