Событие Ajax никогда не начинаетсякогда требуется = "истина" - PullRequest
4 голосов
/ 12 июля 2011

В PrimeFaces, когда я использую:

<p:inputText required="true"
             requiredMessage="message"
             value="#{backingBean.value}">

<p:ajax event="focus"
        update="infoText"
        listener="#{backingBean.something()}" />

</p:inputText>

Ajax-событие никогда не запускается. Однако, если я удаляю required = "true", все работает нормально, и событие запускается.

Может кто-нибудь сказать мне, как использовать p: inputText с p: ajax и required = "true"?

1 Ответ

3 голосов
/ 12 июля 2011

Это, вероятно, происходит, потому что, когда вы получаете фокус на текстовое поле, происходит событие ajax, которое отправляет ViewState для компонентов на странице.

При этом он пытается установить текущее значениетекстового поля в #{backingBean.value}, которое является пустым, вызывая исключение ValidatorException.Поскольку эта ошибка проверки произошла, событие действия #{backingBean.something()} никогда не запускается.

Попробуйте добавить свойство immediate="true" к тегу <p:ajax> и посмотрите, позволяет ли это событие запускаться до фазы проверки.

...