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 не обнаруживает ошибки?


Ответы (0 шт):