验证错误由于某种原因未显示。实际上,绑定结果不会返回任何错误。我的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没有检测到任何错误。帮助
答案 0 :(得分:0)
我使用@Valid
而不是实现我自己的验证器。此外,参数必须按以下顺序排列:
public String homepage(@ModelAttribute(value="userLogin") @Valid UserLogin userLogin, BindingResult bindingResult, Model model) {//your code}
记住@Valid
bean参数和BindingResult
参数的顺序。 BindingResult
应放在@Valid
参数之后,否则将显示错误。