0

可能重复:
弄清楚为什么在我不希望调用 JSF getter 时调用它们

这是一个简单的测试用例,一次显示一页客户列表:

<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() 在恢复视图、应用请求值和呈现响应阶段被调用。只有在渲染响应阶段调用该方法时才有意义。其他两个调用似乎完全是浪费,除了给数据库带来过多的负载外,没有任何用处。在恢复视图阶段加载列表后,我无法缓存列表,因为必须在渲染响应阶段加载下一页的不同列表。我不希望将托管 bean 存储在会话中,因为这会耗尽内存。

您能否解释一下为什么 JSF 必须调用 ui:repeat 的属性 getter 方法在恢复视图和应用请求值阶段,而当时没有调用托管 bean 的其他属性 getter?谢谢。

4

0 回答 0