是否jsf <h:datatable>获取数据两次?</h:datatable>

时间:2011-03-24 09:36:18

标签: jsf tags datatable

我正在使用JSF 2.0。我想使用h:dataTable,我意识到当我在浏览器中打开视图时,dataTable中的值的函数被调用了2次。

我对此感到困惑,我不知道我做错了什么。也许这是正常行为(?)。请帮忙。

它将转到 System.out.println(“getList”); 2次。是的吗?

这是我的代码。

Bean类:

package com.sonicwall.es.bean;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;

@ManagedBean
public class UserBean {

private List<String> list=new ArrayList<String>();

public UserBean() {
    list.add("Tom");
    list.add("Andy");
}

public List<String> getList() {
    System.out.println("getList");
    return list;
}

public String getString() {
    System.out.println("getString");
    return "String";
}

}

查看

string:

 <h:outputText value="#{userBean.string}" />    

列表:

<h:dataTable cellpadding="10" cellspacing="0" border="5"
    value="#{userBean.list}" var="item">
  <h:column>        
    <h:outputText value="#{item}">
    </h:outputText>         
  </h:column>   
</h:dataTable>      

1 个答案:

答案 0 :(得分:2)

在JSF生命周期中可以多次调用Getter。我认为these answers对类似的问题可以帮到你。这个comprehensive tutorial about jsf lifecycle也很有用。