当我们对页面的特定部分执行任何重新渲染操作时。页面的显示很好,但是为了显示特定部分,剩余的页面操作被称为两次,并且这些 BackingBeans 中的查询正在触发(意思是说所有查询都被触发两次以显示页面的某些部分)。这会降低应用程序性能。关于如何通过使用 reRender 来提高性能以及我们如何减少查询执行次数的任何帮助?
user164690
问问题
293 次
4 回答
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;
}
}
于 2009-09-04T14:02:58.820 回答
0
您有任何 Seam 页面操作吗?每个 Ajax 请求都会调用这些(烦人)。
于 2009-09-03T23:57:40.193 回答
0
这是一个已知的错误。没有变通方法,除了仅在需要时通过在需要的表单中设置自定义布尔值(让我们称之为 queryData)来查询数据。
爪哇:
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}"/>
于 2009-12-14T13:16:44.143 回答
0
你的代码在吸气剂中吗?JSF 不保证 getter 只被调用一次,因此不应将昂贵的代码放入 getter。
于 2009-08-29T07:28:18.777 回答