昨天晚上我用SpringMVC的Validation进行表单验证 截取一部分代码
## 实体类需要验证的属性 @NotEmpty(groups={UserLogin.class,UserRegist.class},message="账号不能为空") private String loginName; @NotEmpty(groups={UserRegist.class},message="用户名不能为空") private String userName; @NotEmpty(groups={UserLogin.class,UserRegist.class},message="密码不能为空") private String password; @NotEmpty(groups={UserRegist.class},message="确认密码不能为空") private String password2; @NotEmpty(groups={UserRegist.class},message="性别不能为空") private Integer sex; ## controller类中的代码 @RequestMapping("/reg") public String regist(@Validated(value={UserRegist.class})Easybuy_user user,BindingResult r,Model m) throws Exception{ boolean isok=userService.addUser(user); if (isok) { m.addAttribute("msg","注册成功!"); return "regist"; }else{ m.addAttribute("msg","注册失败!"); return "regist"; } } ## 报的错误 javax.validation.UnexpectedTypeException: HV000030: No validator could be found for type: java.lang.Integer. 报的错误显示找不到java.lang.Integer的验证器到这一步就需要找的Integer这个类型 而这个类型在实体类中sex属性 然后我试着把sex相关的代码注释掉 然后运行发现可以了 然后就能判断代码错误在sex中 我去网上查了下资料发现问题出现在 @NotEmpty上 把改为 @NotNull就好了
## 修改好的代码 @NotEmpty(groups={UserLogin.class,UserRegist.class},message="账号不能为空") private String loginName; @NotEmpty(groups={UserRegist.class},message="用户名不能为空") private String userName; @NotEmpty(groups={UserLogin.class,UserRegist.class},message="密码不能为空") private String password; @NotEmpty(groups={UserRegist.class},message="确认密码不能为空") private String password2; @NotNu'll(groups={UserRegist.class},message="性别不能为空") private Integer sex;@NotEmpty 用在集合上面(不能注释枚举) @NotBlank 用在String上面 @NotNull 用在基本类型,包装类型上 不能为null @Email 用于验证邮箱 @Length 指定长度
如有解释的不好的地方 欢迎大家的指正 共同学习 共同进步 谢谢!