JavaUtils-自定义注解校验格式

工具类:自定义注解,校验格式

校验实体类属性的格式是否正确
/**
 * 自定义注解
 * 
 * @author jianda
 * @date 2017年5月31日
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Constraint(validatedBy=IsMobileValidator.class)
public @interface IsMobile {
	//错误码
	int code() default 1000;
	//错误信息
	String message() default "手机号码格式不正确";
	//分组信息
	Class[] groups() default {};
	
	Class[] payload() default {};
}	
/**
 * 注解处理器
 * 
 * @author jianda
 * @date 2017年5月31日
 */
public class IsMobileValidator implements ConstraintValidator{

	@Override
	public void initialize(IsMobile annotation) {
	}

	@Override
	public boolean isValid(String value, ConstraintValidatorContext context) {
		String regex="^[1][3,4,5,7,8][0-9]{9}$";
		if(value==null || value.length()<=0){
			return true;
		}
		return value.matches(regex);
	}
}
/**
 * 自定义注解,校验工具
 * 
 * @author jianda
 * @date 2017年5月31日
 */
public class ValidationUtils {
	private static Validator validator;
	
	static{
		ValidatorFactory vf=Validation.buildDefaultValidatorFactory();
		validator=vf.getValidator();
	}
	
	/**
	 * 校验自定义注解参数
	 * @param t
	 * @return
	 * @author jianda
	 * @date 2017年5月31日
	 */
	public static Map validate(T t) {
		Map map;
		Map resultMap=new HashMap<>();
		
		Set> set=validator.validate(t);
		if(set.size()>0){
			for (ConstraintViolation cv : set) {
				map=cv.getConstraintDescriptor().getAttributes();
				resultMap.put("successful", false);
				resultMap.put("code", map.get("code"));
				resultMap.put("message", map.get("message"));
			}
		}else {
			resultMap.put("successful", true);
			resultMap.put("code", 0);
			resultMap.put("message", "验证通过");
		}
		return resultMap;
	}
	
	/**
	 * 校验自定义注解参数(分组校验)
	 * @param t
	 * @param groups
	 * @return
	 * @author jianda
	 * @date 2017年5月31日
	 */
	public static Map validate(T t,Class... groups) {
		Map map;
		Map resultMap=new HashMap<>();
		
		Set> set=validator.validate(t, groups);
		if(set.size()>0){
			for (ConstraintViolation cv : set) {
				map=cv.getConstraintDescriptor().getAttributes();
				resultMap.put("successful", false);
				resultMap.put("code", map.get("code"));
				resultMap.put("message", map.get("message"));
			}
		}else {
			resultMap.put("successful", true);
			resultMap.put("code", 0);
			resultMap.put("message", "验证通过");
		}
		return resultMap;
	}
}

测试

public class User {
	String name;
	
	@IsMobile(message="你的电话号码不正确")
	String mobile;
	
	//set、get
}
public class Test {
	public static void main(String[] args) {
		User user =new User();
		user.setMobile("123456789");
		Map map = ValidationUtils.validate(user);
		System.out.println(map);
		//{code=1000, message=你的电话号码不正确, successful=false}
	}
}

你可能感兴趣的:(JavaUtils)