Почему сообщение проверки не отображается для компонента selectOneMenu (JSF 2)?
Я использую этот класс для проверки из полей ввода:
@ManagedBean
@RequestScoped
public class UserInputValidation {
public void validateCity(FacesContext context, UIComponent validate,
Object value) {
String inputFromField = (String) value;
if (inputFromField.equals("") || inputFromField.equals(" ")) {
FacesMessage msg = new FacesMessage("Odaberite grad");
throw new ValidatorException(msg);
}
}
//...
}
И это управляемый компонент, который содержит введенные значения:
@ManagedBean
@RequestScoped
public class InputController {
//Attributes
private String city;
//Get set methods
Почему, когда я создаю selectOneComponent и выбираю первый компонент (пустой ввод), сообщение проверки не отображается?
<h:selectOneMenu id="city" value="#{inputController .city}">
<f:selectItems value="#{searchController.formatedCities()}" validator="#{userInputValidation.validateCity}"/>
</h:selectOneMenu>
<span style="color: red;"><b><h:message for="city"
showDetail="true" /></b></span>
Первое из полей в selectOneMenu - пустое (FormatedCitiesMethod() возвращает "" в качестве первого элемента), так почему же сообщение о проверке не отображается, если кнопка отправки формы нажата с выбранным пробелом?
1 ответ
Решение
validator
атрибут должен идти в <h:selectOneMenu>
не в <f:selectItems>
Сказал, что почему бы вам просто не использовать required="true"
? Почему валидатор @ManagedBean
вместо @FacesValidator
?