当我在facelet页面中使用h:dataTable时,你能帮助我解释为什么多次调用该方法的原因。
<h:dataTable id="listTable" styleClass="pageView_listForm"
value="#{ClassName.dataFactory(topic)}" border="2" rules="rows"
var="item" width="100%" cellpadding="1" cellspacing="0" rowClasses="panelRowOdd,panelRowEven" >
//Body
</h:dataTable>
Bean类
@ManagedBean (name="ClassName")
@SessionScoped
public class ClassName{
...
public DataModel <Person> dataFactory(String topic){
DataModel items = null;
..........
// This block code gets the list of Person
..........
return items;
}
}
我在多次调用方法dataFactory时启动了该页面。我不知道到底发生了什么?这是来自JSF还是我的实现的错误。你能帮帮我吗?
谢谢。
答案 0 :(得分:0)
当Datatable发生时,我们应该注意这样的方法不应该包含很多业务逻辑,或者数据库交互是昂贵的。
在这里我发现了一些有用的讨论......
Why JSF calls getters multiple times
Why is BackingBean method called multiple times when requesting facelet?
和here
Calling a method multiple times when using h:dataTable in JSF