Я использую этот класс для проверки из полей ввода:
@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 () возвращает "" в качестве первого элемента), так почему сообщение проверки не отображается, если на кнопке отправки формы выбран пустой пробел?