reRender正在降低应用程序性能

时间:2009-08-28 06:59:43

标签: richfaces

当我们对页面的特定部分执行任何reRender操作时。显示页面很好,但是为了显示特定部分,剩余的页面操作被称为两次,并且那些BackingBeans中的查询正在激活(意思是说所有查询都会触发两次以显示页面的某些部分)。这降低了应用程序性能。有关如何通过使用reRender提高性能以及如何使查询执行次数减少的任何帮助吗?

4 个答案:

答案 0 :(得分:1)

不保证只调用一次JSF getter方法。您应该在从构造函数调用的方法中进行查询以避免这种情况。

public class Test {
    private String value;

    public Test() {
       this.doQuery();
    }

    private void doQuery() {
       //do query
       this.value = "query result";
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}

答案 1 :(得分:0)

您的代码是否在getter中? JSF并不保证只有一次调用getter这么昂贵的代码不应该进入getter。

答案 2 :(得分:0)

你有任何Seam页面动作吗?每次Ajax请求都会调用它们(烦人)。

答案 3 :(得分:0)

这是一个已知的错误。 没有变通方法,除了通过在需要的表单中设置自定义布尔值(让我们称之为queryData)时,只在显式需要时才查询数据。

的java:

    public String getValue() {
    if (queryData) {
        return doQuery();
    } else {
        return cachedValue;
    }
}

XHTML:

<h:form onsubmit="this.firstChild.value=true;">
<h:inputHidden id="queryData" value="#{backing.queryData}"/>