自定义注解验证不能为空和长度

package com.loan.modules.extbiz.in.rabbitmq.util;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import javax.validation.Constraint;
import javax.validation.Payload;

@Constraint(validatedBy = IsFormatValidator.class) //具体的实现    
@Target( { java.lang.annotation.ElementType.METHOD,    
    java.lang.annotation.ElementType.FIELD })    
@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)    
@Documented
public @interface IsFormat {    
    String message() default "{org.hibernate.validator.constraints.NotEmpty.message}"; 
    
    int length()  ; 
    
    Class<?>[] groups() default {};    
    
    Class<? extends Payload>[] payload() default {};    
        
} 
package com.loan.modules.extbiz.in.rabbitmq.util;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
/**
 * 
 * @description  功能描述: 自定义注解验证不能为空和长度
 * @param        参         数: 
 * @Createdate   建立日期: 2017年5月4日下午2:33:38
 */
public class IsFormatValidator implements ConstraintValidator<IsFormat, Object>{
    
    private int Valuelength; 
    @Override    
    public boolean isValid(Object IdNumber, ConstraintValidatorContext constraintValidatorContext) {
        String message=constraintValidatorContext.getDefaultConstraintMessageTemplate();
        if(IdNumber==null||IdNumber.toString().equals("")){
             constraintValidatorContext.disableDefaultConstraintViolation();//禁用默认的message的值    
                constraintValidatorContext    
                .buildConstraintViolationWithTemplate(message+"不能为空").addConstraintViolation();  
          return false;    
        }
    if(IdNumber.toString().length()>Valuelength){
            constraintValidatorContext.disableDefaultConstraintViolation();//禁用默认的message的值    
               constraintValidatorContext    
               .buildConstraintViolationWithTemplate(message+"长度不能超过"+Valuelength+"位").addConstraintViolation();  
         return false;    
       }
      return true;
    }
    

    @Override
    public void initialize(IsFormat constraintAnnotation) {
      Valuelength=constraintAnnotation.length();        
    }


}

 

posted @ 2017-06-01 09:47  也许还年轻  阅读(4099)  评论(1编辑  收藏  举报