Проверка ввода в Thymeleaf's th: объект в контроллере Spring Boot - PullRequest
0 голосов
/ 10 сентября 2018

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...