2013-03-04 92 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:區域中,否則它將無法正常工作 - 如果您在同一區域中有兩個狀態組件,我認爲無論您使用什麼,總是會使用第二個狀態組件把你的組件的狀態標籤發出請求...

相關問題