我的問題是,RichFaces reRender
不工作'元素樹中的當前元素'下;只有上層元素纔會被重新渲染。使用RichFaces的絕對reRendering
有沒有辦法通過AJAX訪問較低的元素?
任何幫助,將不勝感激! Daniel
編輯我把這個問題編輯爲更一般的問題。如果對原始問題感興趣,請參閱修訂版。
我的問題是,RichFaces reRender
不工作'元素樹中的當前元素'下;只有上層元素纔會被重新渲染。使用RichFaces的絕對reRendering
有沒有辦法通過AJAX訪問較低的元素?
任何幫助,將不勝感激! Daniel
編輯我把這個問題編輯爲更一般的問題。如果對原始問題感興趣,請參閱修訂版。
這裏是changePanel111()
改變下層元素的內容的一個例子:
<h:form id="form" prependId="true">
<rich:panel id="PANEL1">
<h:outputText id="PANEL1TEXT" value="#{ajaxTestBean.panel1}"/>
<rich:panel id="PANEL11">
<h:outputText id="PANEL11TEXT" value="#{ajaxTestBean.panel11}"/>
<rich:panel id="PANEL111">
<h:outputText id="PANEL111TEXT" value="#{ajaxTestBean.panel111}"/>
</rich:panel>
</rich:panel>
<rich:panel id="PANEL12">
<h:outputText id="PANEL12TEXT" value="#{ajaxTestBean.panel12}"/>
<br/>
<a4j:commandLink value="CHANGE PANEL12" action="#{ajaxTestBean.changePanel12}">
<a4j:support reRender="PANEL12" event="onclick"/>
</a4j:commandLink>
<br/>
<a4j:commandLink value="CHANGE PANEL111" action="#{ajaxTestBean.changePanel111}">
<a4j:support reRender="form:PANEL111" event="onclick"/>
</a4j:commandLink>
</rich:panel>
</rich:panel>
</h:form>
通知下部單元需要如何認定爲form:PANEL111
。
希望這會有所幫助!
reRender
作品與提供要重新描繪目標對象的的id
(相同的命名容器內 - form
最常)id
應該是唯一的字符串,根據HTML規範reRender
允許動態值 - 即reRender="#{myBean.currentItemsToRerender}
此基礎上,我認爲你應該能夠實現你想要的(雖然它不是全部LY清楚)
更新:
UIComponent.findComponent(..)
對解決IDS一個明確的算法。因此,爲了絕對參考您的reRendered ID應該開始:
然後繼續通過命名容器的層次結構。
reRender也可以指向表單外的任何組件。例如這個工程:
<h:form>
<a4j:commandButton reRender="panel"/>
</h:form>
<h:panelGrid id="panel">
...
</h:panelGrid>
對於我的MyFaces + Richfaces應用程序,<rich:panel>
標記不按所選答案中的描述工作。當我將其更改爲<a4j:outputPanel ajaxRendered="true" />
時,它開始工作,如下所示:「<a4j:commandLink> Not Rerendering」
配置:MyFaces 2.1.10(用於模板的Facelets)和Richfaces 4.2.3。
希望這會有所幫助。
感謝您的迴應!我編輯了我的帖子... –
+1爲您的更新 – nahab