在我的課程中,我有一個屬性爲短代碼列表:List[ShortCode]
。使用Java中的註釋驗證字符串列表
我有一個自定義的有效短代碼註釋爲ValidShortCode
。
代碼此實現:
@Target({ METHOD, FIELD, ANNOTATION_TYPE })
@Retention(RUNTIME)
@Constraint(validatedBy = ShortCodeValidator.class)
@Documented
public @interface ValidShortCode {
String message() default "{ValidShortCode.message}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
public class ShortCodeValidator implements ConstraintValidator<ValidShortCode, String> {
private static final int MIN_LENGTH = 1;
private static final int MAX_LENGTH = 15;
private static final int EMPTY_LENGTH = 0;
@Override
public void initialize(ValidShortCode shortCode) {
// TODO Auto-generated method stub
}
@Override
public boolean isValid(final String value,
final ConstraintValidatorContext constraintContext) {
boolean valid = false;
if (null == value || value.trim().length() == EMPTY_LENGTH) {
valid = true;
}
else if((value.trim().length() >= MIN_LENGTH)&&(value.trim().length() <= MAX_LENGTH)){
valid = value.matches("([A-Za-z0-9])+");
}
return valid;
}
}
以及驗證上述List[ShortCode]
我寫的另一個定義註解此列表的短代碼。
我有一個想法,在這個自定義註釋中再次驗證短代碼,但它是代碼重複。
在我的驗證短代碼的列表定義註解,我有這樣的:
public class ListValidator implements ConstraintValidator<ValidList, List<String>> {
private static final int EMPTY_SIZE = 0;
@Override
public void initialize(ValidList validList) {
// TODO Auto-generated method stub
}
@Override
public boolean isValid(final List<String> value,
final ConstraintValidatorContext constraintContext) {
boolean valid = false;
if (null == value || value.size() == EMPTY_SIZE) {
valid = true;
}
else {
for(String shortCode: value) {
// Implementing the same code as done for the previous short code annotation
}
}
return valid;
}
}
可有一個人幫我,讓我知道我可以重複使用自定義的註釋ValidShort
或任何其他有效的方法解決這種情況?
謝謝。
參見http://stackoverflow.com/questions/7865209/how-to-create-a-constraintvalidator-for-list – bdrx