@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 对象中的错误。
我正在尝试使用 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 对象中的错误。