使用 RichFaces 进行绝对重新渲染
题
我的问题是 RichFaces reRender
不适用于元素树中当前元素的“下方”;只有上面的元素会被重新渲染。
有什么方法可以使用 AJAX 访问较低的元素吗?
任何帮助,将不胜感激!丹尼尔
编辑 我将这个问题编辑为更普遍的问题。如果对原始问题感兴趣,请参阅修订版。
解决方案 2
下面是其中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}
基于此,我认为你应该能够实现你想要的(尽管还不完全清楚)
更新:
UIComponent.findComponent(..)
有一个明确定义的算法来解析 ids。因此,对于绝对引用,您的 reRendered id 应该 从...开始 :
然后继续遍历命名容器的层次结构。
重新呈现可以指向任何组件形式之外的为好。例如,这作品:
<h:form>
<a4j:commandButton reRender="panel"/>
</h:form>
<h:panelGrid id="panel">
...
</h:panelGrid>
有关我的MyFaces + RichFaces的应用程序,<rich:panel>
标记无法作为在所选择的答案描述工作。当我把它改成<a4j:outputPanel ajaxRendered="true" />
,它开始工作作为这里给出的“
配置:MyFaces的2.1.10(使用了Facelets模板)和RichFaces的4.2.3。
希望这将有助于。
不隶属于 StackOverflow