Пустой ввод формы всегда действителен, BindingResult.hasErrors всегда ложен, даже если переменные помечены аннотацией @Size и @NotEmpty - PullRequest
0 голосов
/ 29 апреля 2020

Я хочу проверить ввод в форме, а затем, если ввод пуст, показать сообщение об ошибке рядом с полем ввода. Проблема в том, что каждый раз, когда я отправляю пустую форму, BindingResult.hasErrors () имеет значение false, а метод processForm () возвращает имя страницы подтверждения. Я использую Hibernate Validator 6.1.3 и запускаю приложение на Tomcat 9. Я учусь на веб-курсе, и тот же код работает для лектора, но не для меня.

У меня есть форма клиента. jsp файл:

   <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
   //...
   <form:form action="processForm" modelAttribute="customer">
     First name: <form:input path="firstName" />
     <br><br>
     Last name (*): <form:input path="lastName" />
     <form:errors path="lastName" cssClass="error" />
     <br><br>
     <input type="submit" value="Submit" />
   </form:form>

У меня есть методы в CustomerController:

@RequestMapping("/processForm")
public String processForm(
        @ModelAttribute("customer") @Valid Customer theCustomer,
        BindingResult theBindingResult) {
    if (theBindingResult.hasErrors()) return "customer-form";
    return "customer-confirmation";
}



@RequestMapping("/showForm")
public String showForm(Model theModel) {
    theModel.addAttribute("customer", new Customer());
    return "customer-form";
}

и я задаю аннотации в классе Customer:

 @Size(min=1, message="is required")
 @NotEmpty
 private String lastName;

Я использую: Spring MVC -5.2. 3.RELEASE & IntelliJ IDEA 2020
libs:
jstl-1.22
javax.servlet-api-4.0.12
javax.annotation-api-1.3.22
Спящий-валидатор: 6.1.3. Финал

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