开发者社区 问答 正文

在SringMVC中使用JSR-303进行校验 @Valid无效:配置报错 

引入的jar包

<dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.1.0.Final</version> </dependency>

<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.1.1.Final</version> </dependency>

Spring版本4.3,JDK7 实体类
public class Spitter { //private Long id;

//@NotNull
@Length(min=5,message="最小长度为5")
private String username;

//@NotNull
@Length(min=5,message="最小长度为5")
private String password;

//@NotNull
@Length(min=2,message="最小长度为5")
private String firstName;

//@NotNull
@Length(min=2,message="最小长度为5")
private String lastName;

public Spitter() {
}</pre> 

控制器

RequestMapping(value = "/register", method = POST) public String processRegistration(@Validated Spitter spitter, BindingResult errors){ if(errors.hasErrors()){ return "registerForm"; } System.out.println("has no errors"); spitterRepository.save(spitter); return "redirect:/spitter/" + spitter.getUsername(); }
debug时: 明明长度不符合,为什么不报错

展开
收起
kun坤 2020-06-01 00:09:46 604 分享
分享
版权
举报
1 条回答
写回答
取消 提交回答
  • 注解错了, @Valid######用@Valid也一样  ######@Configuration public class BeanValidatorConfiguration {   /** *使用hibernate 效验 *hibernate.validator.fail_fast 当出现一次错误,后面就不效验了 如果只有一个效验器,可以不用配置 / @Bean
    public Validator validator(){ ValidatorFactory validatorFactory = Validation.byProvider( HibernateValidator.class ) .configure() .addProperty( "hibernate.validator.fail_fast", "true" ) .buildValidatorFactory(); return validatorFactory.getValidator(); }   /
    *使用@Validated 注解。validator后处理,使所有有这个注解的类都会被aop切面 *spring boot 默认配置了,可以不用加 */   @Bean
    public MethodValidationPostProcessor methodValidationPostProcessor(){ MethodValidationPostProcessor methodValidationPostProcessor = new MethodValidationPostProcessor(); methodValidationPostProcessor.setValidator(validator()); return methodValidationPostProcessor; }   }######我新建了一个springMVC项目,只保留了一个bean,一个控制器和spring基本配置,包也只导入了这两个

    <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.1.0.Final</version> </dependency>

    <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>4.3.1.Final</version> </dependency>

    又没问题了,我再看看之前那个项目问题是什么把

    2020-06-01 00:09:51 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论
问答分类:
问答地址:
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等