禁用A4J:只H表:inputText组件,但没有其他组件
我有以下代码禁用A4J:只H表:inputText组件,但没有其他组件
<a4j:status id="commonstatus" onstart="#{rich:component('loading')}.show();" onstop="#{rich:component('loading')}.hide();" />
<rich:dataTable id="dTable" reRender="ds">
<rich:column id="name" filterMethod="#{myBean.filterName}">
...
<h:inputText> <a4j:support event="onkeyup" reRender="dTable, ds" ignoreDupResponses="true" requestDelay="700" oncomplete="setCaretToEnd(event);" /> </h:inputText>
...
<rich:datascroller id="ds" reRender="dTable">
...
<a4j:support event="onchange" reRender="dtable, ds" status="commonstatus" />
...
</rich:dataTable>
<rich:modalPanel id="loading" moveable="false" autosized="true">
<h:panelGrid columns="2">
<h:graphicImage value="images/progress.gif"/>
<h:outputText value="Loading..."/>
</h:panelGrid>
</rich:modalPanel>
问题:即使我没有指定在<h:inputText>
status="commonstatus"
我仍然得到的onkeyup加载图像事件。 我在这里错过了什么?
任何帮助将是伟大的。
默认情况下,<a4j:status>
适用于触发ajax请求的页面中的所有组件。但是,可以限制将使用for
属性如tag component documentation所述被捕获的组分:
为:所述AjaxContainer组件,其状态被指示(在javax.faces.UIComopnent的格式ID。 findComponent()调用)。
您可以通过a4j:support
的a4j:region
或
设置status
属性为一个不存在的状态ID包h:inputText
(如status="none"
)
这是一个黑客而不是解决方案。 – 2013-03-05 16:47:38
这可能是一个有点过时,但可能如果有人仍然使用Richfaces 3.3,那么这将会非常有用...我在公共facelet模板中定义了2个状态组件。一个是跨应用程序使用的主要地位,每当一个Ajax事件触发,并将其应用于整个页面,一个是“无”的状态,什么也不做(和它必须被包裹在区域):
<a4j:status id="main" onstart="(something)" onstop="(something else)" />
<a4j:region>
<a4j:status id="none" onstart="" onstop="" />
</a4j:region>
每当我不希望主要状态出现时,我会按照Andrey的建议指定“无”状态,但状态组件实际存在,因此可以避免关于不存在组件的警告。
不要忘了将它包装在a4j:区域中,否则它将无法正常工作 - 如果您在同一区域中有两个状态组件,我认为无论您使用什么,总是会使用第二个状态组件把你的组件的状态标签发出请求...
谢谢:) :)像一个魅力的作品 – akshob 2013-03-05 06:59:29
不客气:) – 2013-03-05 16:48:18