2013-11-20 141 views
1

我正在使用javax.validation.constraints.Pattern。@字符串列表中的@Pattern注释

我添加模式的pojo也包含一个List对象。 如何添加@Pattern注释以便检查元素?

@NotNull 
private List<String> myListOfStrings; 

感谢

回答

1

。如果不String你有一些自定义对象,诠释着List@Valid和表达的规则在自定义对象会做的伎俩。

对于这种情况(你不能表达在String类验证),我认为最好的机会是自定义验证到字符串列表上应用模式:

@NotNull 
@ListPattern("regexp") 
private List<String> myListOfStrings; 

注释将大致看像:

@Constraint(validatedBy=ListPatternValidator.class) 
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) 
@Retention(RUNTIME) 
public @interface ListPattern { 
    ... // standard stuff 
} 

而且验证:

public class ListPatternValidator 
    implements ConstraintValidator<ListPattern, List<?>> { 

    public void initialize(ListPattern constraintAnnotation) { 
     // see Pattern implementation 
    } 

    public boolean isValid(List<?> value, ConstraintValidatorContext context) { 
     for(Object o : value) { 
      if(does not match) return false; 
     } 
     return true; 
    } 
}