2013-11-20 74 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; 
    } 
}