Перечитайте свой вопрос, и я буду интерпретировать это как это:
«Вы хотели бы написать собственный валидатор, который проверяет, что если поле города существует, то поле страны равно„США“ "
Итак, я хотел бы посмотреть на происходящее об этом следующим образом:
Сначала создать интерфейс валидатор:
@Documented
@ValidatorClass(value=CountryEqualsUSValidator.class)
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface CountryEqualsUS {
String message() default "The country should be US for the city provided";
}
Затем создать аи Класс alidator:
public class CountryEqualsUSValidator implements Validator<CountryEqualsUS> {
public void initialize(CountryEqualsUS arg0) {
}
public boolean isValid(Object value) {
if(value != null && value instanceof YourBeanClass) {
YourBeanClass yourBeanClass = (YourBeanClass) value;
if(/*some test logic here*/) {
return true;
else {
return false;
}
}
return false;
}
}
Тогда на класс, который вы хотите проверить:
@CountryEqualsUS
public class YourBeanClass {
...
}
Тогда, наконец, на своем классе контроллер/действие, когда форма представляется, город является значение который вы хотите проверить, добавьте этот метод:
public boolean doValidation(YourBeanClass yourBeanClass) {
ClassValidator requestValidator = new ClassValidator(yourBeanClass.getClass());
InvalidValue[] validationMessages = requestValidator.getInvalidValues(yourBeanClass);
if (validationMessages != null && validationMessages.length > 0) {
for (int i = 0; i < validationMessages.length; i++) {
//Add a validation message to be displayed to the user
}
return false;
}
return true;
}
Вы нашли ответ на свой вопрос? –