Spring Mvc使用JSR-303验证

短命女 2022-04-13 12:17 266阅读 0赞

提前注意:可能会出现 以下错误

Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: javax/el/ELManager

避免方法:使用 tomcat9

需要maven依赖

  1. <!--JSR-303 验证框架接口,用于验证字段正确性,比如验证邮箱格式-->
  2. <!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator -->
  3. <dependency>
  4. <groupId>org.hibernate.validator</groupId>
  5. <artifactId>hibernate-validator</artifactId>
  6. <version>6.0.13.Final</version>
  7. </dependency>
  8. <!-- https://mvnrepository.com/artifact/javax.validation/validation-api -->
  9. <dependency>
  10. <groupId>javax.validation</groupId>
  11. <artifactId>validation-api</artifactId>
  12. <version>2.0.1.Final</version>
  13. </dependency>

Bean代码

  1. public class LoseUser {
  2. public interface Register{};//注册功能分组
  3. public interface SendRegisterEmailCode{};
  4. private Integer id ;
  5. @Email(message = "邮箱格式不正确",groups = {Register.class,SendRegisterEmailCode.class})
  6. private String loginname ;
  7. @Size(min = 8,max = 16,message = "密码长度为8-16位",groups = {Register.class})
  8. private String password ;
  9. @Size(min = 6,max = 6,message = "验证码格式不正确",groups = {Register.class})
  10. private String emailCode;//邮箱验证码
  11. public LoseUser() {
  12. }
  13. //省略get、set方法
  14. }

控制器代码

  1. @RequestMapping("sendEmailCode")
  2. @ResponseBody
  3. public AjaxRes sendEmailCode(@Validated({LoseUser.SendRegisterEmailCode.class}) LoseUser loseUser,BindingResult result){
  4. AjaxRes res=new AjaxRes();
  5. if(result.hasErrors()){
  6. List<ObjectError> allErrors = result.getAllErrors();
  7. FieldError objectError = (FieldError)allErrors.get(0);//每次取出第一个错误,并且返回到前端
  8. res.setFailMsg(objectError.getDefaultMessage());
  9. return res;
  10. }else {
  11. res.setFailMsg("验证失败");
  12. return res;
  13. }
  14. }

发表评论

表情:
评论列表 (有 0 条评论,266人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JSR303通用验证

    JSR303是JAVA EE6中的子规范。 用于对Java Bean的字段值进行校验,确保输入进来的数据在语义上是正确的,使验证逻辑从业务代码中脱离出来。 JSR303是运

    相关 JSR303使用

    验证方式 用户在前端页面上填写表单时,前端js程序会校验参数的合法性 当数据到了后端,为了防止恶意操作,保持程序的健壮性 后端同样需要对数据进行校验 JSR30