0

重複の可能性:
JSF ゲッターが呼び出されるとは思わないのになぜ呼び出されるのかを理解する

顧客のリストを一度に 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 のプロパティ ゲッター メソッドを呼び出す必要がある理由を説明してください。ありがとう。

4

0 に答える 0