как отключить выполнение действия на ajax-запросах - PullRequest
0 голосов
/ 05 августа 2009

НАЧАЛЬНАЯ ПОЗИЦИЯ:

Мы используем SEAM вместе с RICHFACES.

У нас есть следующая конфигурация страницы с действием (называемым actionBean.doBefore), которое должно быть выполнено один раз при загрузке страницы:

<page>
  <action  execute="#{actionBean.doBefore}"/>
  <navigation from-action="#{actionBean.doAfter}">
    <redirect view-id="/view/component/test.xhtml" />
  </navigation>
</page>

ПРОБЛЕМА

Действие даже выполняется, когда мы проверяем поле в ajax:

<h:inputText value="#{formBean.price}" id="price" required="true">
  <a4j:support event="onblur" reRender="price" ajaxSingle="true" bypassUpdates="true" />
</h:inputText>

или используйте ящик для предложений (даже при вводе):

<rich:suggestionbox id="suggestionBoxId" for="city" suggestionAction="#{suggest.autocomplete}" var="result" minChars="3" nothingLabel="No capitals found" ajaxSingle="true" bypassUpdates="true" selfRendered="true" >
  <h:column>
    <h:outputText value="#{result.cityName}" />
  </h:column>
</rich:suggestionbox>

Заранее спасибо Раффи

Ответы [ 2 ]

1 голос
/ 06 августа 2009

спасибо большое. был бы другой подход. следующий атрибут тега action, похоже, решил мою проблему. надеюсь, без побочных эффектов:

<action  execute="#{actionBean.doBefore}" on-postback="false"/>
1 голос
/ 06 августа 2009

Насколько я знаю, ты не можешь. Действие всегда будет вызываться.

Вместо того, чтобы использовать действие страницы, почему бы вам не настроить Backing Bean на PAGE или CONVERSATION , а затем выполнить действие из метода, помеченного @Create ? Это даст вам тот же эффект, что и действие страницы, но будет вызываться только при первом создании экземпляра Бина.

...