如何在ajax请求上禁用操作执行

时间:2009-08-05 09:57:33

标签: ajax jboss seam richfaces

初始位置:

我们将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 个答案:

答案 0 :(得分:1)

据我所知你不能。始终会调用该操作。

为什么不将Backing Bean的范围限定为 PAGE CONVERSATION ,而不是使用页面操作,然后从使用 {注释的方法执行操作{1}} ?这将为您提供与页面操作相同的效果,但只会在第一次实例化Bean时调用。

答案 1 :(得分:1)

非常感谢。将是另一种方法。 action标签上的以下属性似乎解决了我的问题。希望没有副作用:

<action  execute="#{actionBean.doBefore}" on-postback="false"/>