Вы можете просто создать специальный валидатор обычным способом. Входной компонент уже доступен как 2-й аргумент, вам просто нужно его использовать.
public class UIInputDateRangeValidator implements Validator {
public void validate(FacesContext context, UIComponent component, Object value) {
UIInputDate inputDate = (UIInputDate) component;
Date minDate = inputDate.getMinDate();
Date maxDate = inputDate.getMaxDate();
Date date = (Date) value;
// ... Use Date#after(), Date#before(), etc.
}
}
Вы можете создать и добавить валидатор в конструктор настраиваемого компонента.
public UIInputDate() {
addValidator(new UIInputDateRangeValidator());
// You can use setConverter() with new DateTimeConverter() if you didn't already do that.
}
Вы имеете в виду, что вы хотите проверить значение атрибута, указанное enduser (в частности, разработчик с использованием вашего настраиваемого компонента)? – BalusC
Не совсем! Мой пользовательский компонент принимает 'minDate' и' maxDate'. Я хочу, чтобы, независимо от формата даты в Java, я могу проверить, что введенное значение (пользователем) соответствует параметрам 'minDate' и' maxDate', указанным разработчиком. –
Хм, я понял, что вы спросили, как проверить, если разработчик указал 'java.util.Date', а не, например. 'java.lang.String' как' maxDate'. В любом случае, ответ прост, используйте валидатор (вы можете добавить его в конструктор компонента). Но, тем не менее, я нахожу ваш вопрос, когда все запутывают. – BalusC