Слушатель JSF Ajax доступен перед событием - PullRequest
2 голосов
/ 16 февраля 2012

Я пытаюсь выяснить свойство слушателя тега ajax, и из того, что я прочитал здесь

Ajax-прослушиватель, подключенный к вашему ajax-событию с атрибутом listener, - это метод, который будет вызываться каждый раз, когда выполняется ajax-запрос

это именно то, что я ищу. Я также попробовал первый пример кода на этой веб-странице, и он работает, как и ожидалось. однако, когда я добавляю следующий код -

<h:commandButton id="d" image="#{CodeBean.imgSrc}"  action="#{CodeBean.clickImg()}">
      <f:ajax event="action" render="d"  listener="#{CodeBean.update}" />
</h:commandButton>

Обе функции 'clickImg' и 'update' вызываются (и 'clickImg' выполняет свою задачу), но "update" выполняется ДО "clickImg" (я добавил к обеим функциям System.out. Println (...) '). и да - в этом примере кода «обновление» выполняется после «setHello» это не имеет смысла для меня - или я что-то пропустил? веселит, Эрез

Ответы [ 2 ]

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

Это полностью по спецификации.Слушатели действий вызываются перед действиями во время фазы действия вызова.Если вам необходимо выполнить бизнес-действие и / или выполнить навигацию, выполните это в action.Если вам нужно прослушать событие действия, чтобы при необходимости выполнить некоторую предварительную обработку, используйте listener.

В вашем конкретном случае похоже, что слушатель действия вообще не нужен.Просто удалите его и переместите задание в метод action.Атрибут event, кстати, излишен.По умолчанию это уже action.Просто удали это.Это работает одинаково хорошо:

<h:commandButton image="#{CodeBean.imgSrc}" action="#{CodeBean.clickImg}">
    <f:ajax render="@this" />
</h:commandButton>

См. Также:

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

в примере, который вы смотрели на setHello, был установщик значения h: inputText, а не действие, как в вашем коде, это то, что вы пропустили ... И вот почему в примере сеттер был вызван перед слушателем ajax...

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