ページの特定の部分に対して reRender アクションを実行している場合。ページの表示は問題ありませんが、特定の部分を表示するために、残りのページ アクションが 2 回呼び出され、それらの BackingBeans 内のクエリが実行されます (ページの一部を表示するために、すべてのクエリが 2 回実行されることを意味します)。これにより、アプリケーションのパフォーマンスが低下しています。reRender を使用してパフォーマンスを向上させる方法と、クエリの実行回数を減らす方法について何かヘルプはありますか?
4 に答える
1
JSF getter メソッドは、1 回だけ呼び出されるとは限りません。これを回避するには、コンストラクターから呼び出されたメソッドでクエリを実行する必要があります。
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
あなたのコードはゲッターにありますか?JSFは、ゲッターが1回だけ呼び出されることを保証しないため、高価なコードをゲッターに入れないようにする必要があります。
于 2009-08-29T07:28:18.777 に答える
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
Seam ページのアクションはありますか? これらは、すべての Ajax リクエストで (面倒なことに) 呼び出されます。
于 2009-09-03T23:57:40.193 に答える