Как проверить значение текстового поля, когда пользователь нажимает вкладку - PullRequest
0 голосов
/ 05 февраля 2012

Сценарий был примерно таким:

У меня есть 2 текстовых поля, скажем, txtbox1 и txtbox2. Когда пользователь вводит что-то в txtbox1, а затем нажимает tab, txtbox1 теряет фокус, а txtbox2 получает фокус. Я хочу проверить значение txtbox1, когда он теряет фокус. Если значение txtbox1 недопустимо, мне нужно отрендерить <h:outputText value="Invalid field" rendered=#{bean.errorFlag}/>

Я использовал <p:ajax event="blur" /> на txtbox1.

Моя проблема в том, что он не отображает outputText, даже если для errorFlag установлено значение true. Я также использую update в ajax для обновления outputText, но он не отображает его.

Ответы [ 2 ]

1 голос
/ 06 февраля 2012

Необходимо указать идентификатор клиента для обновляемого элемента в атрибуте update.

<h:inputText id="input1" value="#{bean.input1}">
    <p:ajax event="blur" update="input1Message" />
</h:inputText>
<h:panelGroup id="input1Message">
    <h:outputText value="Invalid field!" rendered="#{bean.input1Error}" />
</h:panelGroup>

Но ... Вы в основном заново изобретаете проверку JSF и не пользуетесь встроенным API проверки JSF. Я настоятельно рекомендую просто реализовать Validator.

@FacesValidator("input1Validator")
public class Input1Validator implements Validator {

    @Override
    public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
        if (isInvalid(value)) {
            throw new ValidatorException(new FacesMessage("Invalid field!"));
        }
    }

}

и используйте его следующим образом

<h:inputText id="input1" value="#{bean.input1}">
    <p:ajax event="blur" update="input1Message" />
</h:inputText>
<h:message id="input1Message" for="input1" />

Это освобождает ваш управляемый компонент от проверки и беспорядка логических свойств.

0 голосов
/ 05 февраля 2012

Полагаю, вы используете p: tabview. если это правильно, вы можете использовать слушатель смены табуляции


Вы можете посмотреть этот сайт http://www.primefaces.org/showcase-labs/ui/tabviewChangeListener.jsf

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