@valid注释未在spring mvc

时间:2016-01-11 09:45:53

标签: spring validation model-view-controller bean-validation

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

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

以下是Controller代码:

@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;
  .....
}

Dispacther 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

Jar file screenshots

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

1 个答案:

答案 0 :(得分:0)

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

现在我能够在BindingResult对象中获取错误。