Я переношу приложение Spring jsp в Thymeleaf, но имею проблемы с отображением ошибок формы.
Я использую SpringTemplateEngine и ThymeleafViewResolver, и обработка шаблонов работает. Также значения формы заполняются в поля ввода формы.
Единственное, что пока не работает, - это отображать сообщения об ошибках формы.
Мой контроллер выглядит так:
@RequestMapping(method = RequestMethod.POST)
String save(@Valid CustomerForm form, BindingResult bindingResult, Model model, RedirectAttributes redirectAttributes) {
if (bindingResult.hasErrors()) {
model.addAttribute("form", form)
return "app/customers/create"
}
....
Я напечатал bindingResult, чтобы убедиться, что он содержит ошибку:
binding result = org.springframework.validation.BeanPropertyBindingResult: 1 errors
Field error in object 'customerForm' on field 'name': rejected value []; codes [customerForm.name.NotBlank,name.NotBlank,java.lang.String.NotBlank,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [customerForm.name,name]; arguments []; default message [name]]; default message [may not be empty]
Когда я пытаюсь отобразить ошибку, используя:
<ul>
<li th:each="e : ${#fields.detailedErrors()}" th:class="${e.global}? globalerr : fielderr">
<span th:text="${e.global}? '*' : ${e.fieldName}">The field name</span> |
<span th:text="${e.message}">The error message</span>
</li>
</ul>
он не отображает никаких ошибок.
Я пробовал различные варианты, как описано на http://www.thymeleaf.org/doc/html/Thymeleaf-Spring3.html#validation-and-error-messages, но без успеха.
Я что-то пропустил?
ИЗМЕНИТЬ
Примечание. Я пытаюсь отобразить ошибку в форме, установленной через th: object:
<form id="customer-form" action="#" th:action="@{/app/customers}" th:object="${form}" method="post" class="form-horizontal">
<ul>
<li th:each="e : ${#fields.detailedErrors()}" th:class="${e.global}? globalerr : fielderr">
<span th:text="${e.global}? '*' : ${e.fieldName}">The field name</span> |
<span th:text="${e.message}">The error message</span>
</li>
</ul>