BindingResult未检测基于注释的约束和错误

时间:2013-05-03 05:24:12

标签: java spring-mvc annotations validation

验证错误由于某种原因未显示。实际上,绑定结果不会返回任何错误。我的bean如下:

@NotBlank
@Size(min = 5, max = 20, message = "User ID must be 5 to 20 characters long.")
@Pattern(regexp = "^[a-zA-Z0-9]+$", message = "User ID must be alphanumeric.")
public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

@NotBlank
@Size(min = 6, max = 20, message = "The password must be between 6 to 20 characters long.")
public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

我的控制器类有以下变量:

private BeanValidator beanValidator = new BeanValidator(new AnnotationBeanValidationConfigurationLoader());

控制器中有一个处理绑定的方法。

beanValidator.validate(userLogin, bindingResult);

if(bindingResult.hasErrors()) {
    return "/";
}
else 
    return "/homepage";

当我使用空白凭据登录用户名和密码的值时,系统会登录。显然,bindingResult没有检测到任何错误。帮助

1 个答案:

答案 0 :(得分:0)

我使用@Valid而不是实现我自己的验证器。此外,参数必须按以下顺序排列:

public String homepage(@ModelAttribute(value="userLogin") @Valid UserLogin userLogin, BindingResult bindingResult, Model model) {//your code}

记住@Valid bean参数和BindingResult参数的顺序。 BindingResult应放在@Valid参数之后,否则将显示错误。