【基本条件】
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;
@ContextConfiguration({ "/spring/spring.xml" })
@RunWith(SpringJUnit4ClassRunner.class)
public class Test{
@Test
public void test_validate(){
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=) 被注释的元素必须在合适的范围内
参考: