Почему сообщение проверки не отображается для компонента selectOneMenu (JSF 2)? - PullRequest
0 голосов
/ 05 июня 2011

Я использую этот класс для проверки из полей ввода:

@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 Ответ

3 голосов
/ 05 июня 2011

Атрибут validator должен идти в <h:selectOneMenu>, а не в <f:selectItems>

Сказал, что, почему бы вам просто не использовать required="true"? Почему валидатор @ManagedBean вместо @FacesValidator?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...