我正在使用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>
答案 0 :(得分:2)
在JSF生命周期中可以多次调用Getter。我认为these answers对类似的问题可以帮到你。这个comprehensive tutorial about jsf lifecycle也很有用。