2013-03-04 86 views
1

我有以下代码禁用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加载图像事件。 我在这里错过了什么?

任何帮助将是伟大的。

回答

1

默认情况下,<a4j:status>适用于触发ajax请求的页面中的所有组件。但是,可以限制将使用for属性如tag component documentation所述被捕获的组分:

为:所述AjaxContainer组件,其状态被指示(在javax.faces.UIComopnent的格式ID。 findComponent()调用)。

+0

谢谢:) :)像一个魅力的作品 – akshob 2013-03-05 06:59:29

+0

不客气:) – 2013-03-05 16:48:18

0

您可以通过a4j:supporta4j:region

设置status属性为一个不存在的状态ID包h:inputText(如status="none"

+0

这是一个黑客而不是解决方案。 – 2013-03-05 16:47:38

0

这可能是一个有点过时,但可能如果有人仍然使用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:区域中,否则它将无法正常工作 - 如果您在同一区域中有两个状态组件,我认为无论您使用什么,总是会使用第二个状态组件把你的组件的状态标签发出请求...

相关问题