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;
        }
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章