У меня есть два поля, представляющих диапазон данных («от» и «до»). Мне нужно проверить, заполнены ли оба поля ни на одном из них, поэтому только в тот момент, когда должно появиться подтверждающее сообщение, это когда одно заполнено, а не второе. Как я могу это сделать? Я добавил этот пользовательский валидатор и добавил его в оба поля (поскольку JSF не проверяет пустые поля), но он всегда показывает, что они недействительны.
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
String otherControlId = (String) component.getAttributes().get("otherControlId");
UIInput otherControlInput = (UIInput) context.getViewRoot().findComponent(otherControlId);
Object otherControlValue = otherControlInput.getValue();
if ((value == null && otherControlValue != null) || (value != null && otherControlValue == null)) {
//show message
}
}
otherControlId указывает на второй идентификатор элемента управления, и я получаю элемент управления в валидаторе. Но otherControlValue всегда равно нулю.