@valid 注释未验证 spring mvc 中的输入

@valid annotation not validating the input in spring mvc

我正在尝试使用 java 验证 api 和 hibernate 验证器来实现 Spring mvc 验证,但不知何故代码未验证输入。 BindingResult 对象不包含任何错误。

为此我遵循了本教程:https://spring.io/guides/gs/validating-form-input/

控制器代码如下:

@RequestMapping(value="/register", method= RequestMethod.POST)
    public String processRegistration( @javax.validation.Valid User user,BindingResult errors, Model model) {
    if(errors.hasErrors()){
        model.addAttribute(errors);
        return "register";
    }
    System.out.println("Saving user..user.getUsername()");
    return "redirect:/user/"+user.getUsername();
}

下面是需要验证的对象:

public class User {
  @NotEmpty
  @Size(min=5, max=15)
  String firstName;
  @NotEmpty
  @Size(min=5, max=15)
  String lastName;
  @NotEmpty
  @Size(min=5, max=15)
  String username;
  @NotEmpty
  @Size(min=5, max=15)  
  String password;
  .....
}

分发器 servlet:

public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{

@Override
protected Class<?>[] getRootConfigClasses() {
    // TODO Auto-generated method stub
    return new Class<?>[]{main.config.RootConfig.class};
}

@Override
protected Class<?>[] getServletConfigClasses() {
    return new Class<?>[]{main.config.WebConfig.class};
}

@Override
protected String[] getServletMappings() {
    return new String[]{"/"};
}

}

我在构建路径中有两个验证 jar

但仍然没有进行验证。你能告诉我为什么吗?

我通过将 hibernate-validator jar 更新为 hibernate-validator-4.2.0.Final 并添加了 SLF4J jar 版本 slf4j.api-1.6.1.[= 来解决这个问题10=]

现在我可以获取 BindingResult 对象中的错误。