BindingResult при проверке на ошибки(hasErrors) всегда возвращает false
Исполняемый код:
import javax.validation.Valid;
// в теле контроллера
@RequestMapping(value="/check-user", method = RequestMethod.POST)
public String checkUser(@Valid @ModelAttribute("user") User user, BindingResult bindingResult, Model model) { // @ModelAttribute or @RequestParam if in request!
// @Valid checks if user is invalid(looks on javax.validation.constraints.* annotations)
// if user is invalid - it will be in bindingResult(it should be after object @Valid checks!).
System.out.println(user);
if(bindingResult.hasErrors()) {
System.out.println("It won't be printed");
return "login";
}
model.addAttribute("user", user);
return "main";
}
Класс User:
import javax.validation.constraints.*;
public class User {
@Size(min = 6, message = "Name should have 6 or over length")
private String name;
@Size(min = 8, max = 20, message = "Password should have 5-20 length")
private String password;
private boolean admin;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public boolean isAdmin() {
return admin;
}
public void setAdmin(boolean admin) {
this.admin = admin;
}
@Override
public String toString() {
return "User [name=" + name + ", password=" + password + ", admin=" + admin + "]";
}
}
Вывод(вводил информацию в браузере):
User [name=Barn, password=, admin=true]
Очевидно, что "Barn" - строка длиной меньше 6, пароль же вовсе пустой. Почему BindingResult не обнаруживает ошибки?