在JSF中使用h:dataTable时多次调用方法

时间:2011-07-07 10:19:24

标签: jsf

当我在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还是我的实现的错误。你能帮帮我吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

当Datatable发生时,我们应该注意这样的方法不应该包含很多业务逻辑,或者数据库交互是昂贵的。

在这里我发现了一些有用的讨论......

Why JSF calls getters multiple times

Why is BackingBean method called multiple times when requesting facelet?

This

here

Calling a method multiple times when using h:dataTable in JSF