提前注意:可能會出現 以下錯誤
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;
}
}