【基本條件】
1.maven依賴:
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
2.ValidatorUtil驗證工具類:
package com.bbs.validation;
import org.apache.commons.lang3.StringUtils;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import java.util.Iterator;
import java.util.Set;
public class ValidatorUtil {
/**
* 驗證參數
* @param obj
* @return
*/
public static ValidatorResult validateParam(Object obj) {
ValidatorResult validatorResult = new ValidatorResult();
if(null == obj) {
validatorResult.setMessage("參數對象不能爲空!");
return validatorResult;
}
Validator validator = Validation.buildDefaultValidatorFactory()
.getValidator();
Set<ConstraintViolation<Object>> constraintViolations = validator
.validate(obj);
//驗證對象某一個屬性,可擴展一次性支持多個屬性
Iterator<ConstraintViolation<Object>> iter = constraintViolations
.iterator();
String message = null;
if (iter.hasNext()) {
message = iter.next().getMessage();
}
if(StringUtils.isBlank(message)) {
validatorResult.setSuccess(true);
} else {
validatorResult.setMessage(message);
}
return validatorResult;
}
}
3.ValidatorResult驗證結果類:
package com.bbs.validation;
import java.io.Serializable;
public class ValidatorResult implements Serializable {
private static final long serialVersionUID = 4875016932640121437L;
private boolean success;
private String message;
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
4.驗證的實體類:
package com.bbs.dto;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
public class UserDTO implements Serializable {
private static final long serialVersionUID = 8312793705452606048L;
/**用戶名**/
@NotNull(message = "請填寫用戶名!")
private String userName;
/** 用戶密碼 */
@NotNull(message = "請填寫密碼!")
private String password;
public setUserName(String userName){
this.userName = userName;
}
public getUserName(){
return this.userName;
}
public setPassword(String password){
this.password = password;
}
public getPassword(){
return this.password;
}
}
【場景使用】
package com.bbs;
import com.bbs.dto.UserDTO;
import com.bbs.validation.ValidatorUtil;
import com.bbs.validation.ValidatorResult;
public class Test{
public void static main(String [] args){
UserDTO userDTO = new UserDTO();
ValidatorResult validatorResult = ValidatorUtil.validateParam(userDTO);
if(!validatorResult.isSuccess()) {
System.out.println("驗證失敗:"+validatorResult.getMessage());
}else{
System.out.println("驗證成功");
}
}
}
說明:
1)支持驗證方式:
javax Validator 註解類:
@Null 被註釋的元素必須爲 null
@NotNull 被註釋的元素必須不爲 null
@AssertTrue 被註釋的元素必須爲 true
@AssertFalse 被註釋的元素必須爲 false
@Min(value) 被註釋的元素必須是一個數字,其值必須大於等於指定的最小值
@Max(value) 被註釋的元素必須是一個數字,其值必須小於等於指定的最大值
@DecimalMin(value) 被註釋的元素必須是一個數字,其值必須大於等於指定的最小值
@DecimalMax(value) 被註釋的元素必須是一個數字,其值必須小於等於指定的最大值
@Size(max=, min=) 被註釋的元素的大小必須在指定的範圍內
@Digits (integer, fraction) 被註釋的元素必須是一個數字,其值必須在可接受的範圍內
@Past 被註釋的元素必須是一個過去的日期
@Future 被註釋的元素必須是一個將來的日期
@Pattern(regex=,flag=) 被註釋的元素必須符合指定的正則表達式
2)也可以使用Hibernate Validator驗證器:
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.9.Final</version>
</dependency>
Hibernate Validator 註解類:
@NotBlank(message =) 驗證字符串非null,且長度必須大於0
@Email 被註釋的元素必須是電子郵箱地址
@Length(min=,max=) 被註釋的字符串的大小必須在指定的範圍內
@NotEmpty 被註釋的字符串的必須非空
@Range(min=,max=,message=) 被註釋的元素必須在合適的範圍內