顧客のリストを一度に 1 ページずつ表示する簡単なテスト ケースを次に示します。
<h:form>
<h:commandButton action="#{controller.nextPage()}" value="Next" />
<ui:repeat value="#{controller.customerList}" var="c">
#{c.name}<br/>
</ui:repeat>
</h:form>
public String nextPage() {
//...
return null;
}
ポストバック中、getCustomerList() は、ビューの復元、リクエスト値の適用、およびレスポンス フェーズのレンダリング中に呼び出されます。レンダリング応答フェーズ中にメソッドが呼び出された場合にのみ意味があります。他の 2 つの呼び出しは完全に無駄のように見え、データベースに過度の負荷をかける以外の目的はありません。次のページの別のリストをレンダリング応答フェーズでロードする必要があるため、リストを復元ビュー フェーズでロードした後、リストをキャッシュできません。マネージド Bean をセッションに保存したくありません。メモリを消費するからです。
その時点でマネージド Bean の他のプロパティ ゲッターが呼び出されていないときに、JSF がビューの復元および要求値の適用フェーズで ui:repeat のプロパティ ゲッター メソッドを呼び出す必要がある理由を説明してください。ありがとう。