Spring Mvc使用JSR-303验证
提前注意:可能会出现 以下错误
Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: javax/el/ELManager
避免方法:使用 tomcat9
需要maven依赖
<!--JSR-303 验证框架接口,用于验证字段正确性,比如验证邮箱格式-->
<!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator -->
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.13.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.validation/validation-api -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
Bean代码
public class LoseUser {
public interface Register{};//注册功能分组
public interface SendRegisterEmailCode{};
private Integer id ;
@Email(message = "邮箱格式不正确",groups = {Register.class,SendRegisterEmailCode.class})
private String loginname ;
@Size(min = 8,max = 16,message = "密码长度为8-16位",groups = {Register.class})
private String password ;
@Size(min = 6,max = 6,message = "验证码格式不正确",groups = {Register.class})
private String emailCode;//邮箱验证码
public LoseUser() {
}
//省略get、set方法
}
控制器代码
@RequestMapping("sendEmailCode")
@ResponseBody
public AjaxRes sendEmailCode(@Validated({LoseUser.SendRegisterEmailCode.class}) LoseUser loseUser,BindingResult result){
AjaxRes res=new AjaxRes();
if(result.hasErrors()){
List<ObjectError> allErrors = result.getAllErrors();
FieldError objectError = (FieldError)allErrors.get(0);//每次取出第一个错误,并且返回到前端
res.setFailMsg(objectError.getDefaultMessage());
return res;
}else {
res.setFailMsg("验证失败");
return res;
}
}
还没有评论,来说两句吧...