如下所示的代码,函数“handler.getXXX()”仍然执行,即使在panelGround的渲染值为false之外
<h:panelGroup id="group" rendered="#{expression.xx}">
<rich:list value="#{handler.getXXX()}" >
xx
</rich:list>
</h:panelGroup>
但是代码正在运行:handler.getXXX()将不会被执行
<h:panelGroup id="group" rendered="#{expression.xx}">
<h:outputText value="#{handler.getXXX()}" />
</h:panelGroup>
我们有解决方案吗?
答案 0 :(得分:0)
您的getter方法不应执行任何数据检索,只需返回先前检索过的数据;因此,如果吸气剂被调用(甚至多次)也无关紧要。如果你必须在getter方法中有一些业务逻辑,你需要检查是否真的必须检索数据。
答案 1 :(得分:0)
实际上这是RichFaces中的一个错误:https://issues.jboss.org/browse/RF-13111
注意,仅当部分状态保存关闭时才可以重现。如果可以,打开部分状态保存应该有助于解决问题(还有整体应用程序性能等):
<context-param>
<param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
<param-value>true</param-value>
</context-param>
另一个注意事项:在RichFaces 4.3.0之前,它还可以通过部分状态重现:https://issues.jboss.org/browse/RF-11382