richfaces 4标签'非渲染中的值方法h:panel地面总是被剔除

时间:2014-04-21 06:56:39

标签: jsf-2 richfaces

如下所示的代码,函数“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>

我们有解决方案吗?

2 个答案:

答案 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