我有以下 JSF 页面:
<h:head>
<title>Admin Page</title>
</h:head>
<h:body>
<h1>Users List</h1>
<h:dataTable value="#{adminBean.linkArr}" var="o" >
<h:column>
<f:facet name="header">User name</f:facet>
#{o.username}
</h:column>
</h:dataTable>
</h:body>
像这样的托管bean:
@ManagedBean(name="adminBean")
@SessionScoped
public class AdminBean {
private static UserLink[] linkArr;
public AdminBean() {
FacesContext context = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest)context.getExternalContext().getRequest();
HttpSession session = request.getSession();
String values[] = (String[])request.getSession().getAttribute("userList");
int userNos = values.length;
linkArr = new UserLink[userNos];
for(int i = 0; i < userNos; ++i) {
String tmp = values[i];
linkArr[i] = new UserLink(tmp);
}
}
public UserLink[] getLinkArr() {
return linkArr;
}
public static class UserLink {
public String username;
public UserLink(String username) {
this.username = username;
}
public String getUsername() {
return username;
}
}
}
我实际上想要做的是:
通过创建会话来保存以前调用的 servlet 中的一些数据。假设托管会话 bean 仅在调用其关联的 XHTML 文件时创建,我从会话对象中获取属性,然后使用它来填充 JSF 表。
但是,我得到的不是 JSF 表,而是以下输出:
Users List
User name #{o.username}
我是否假设托管会话 bean 的生命周期错误,或者我的 JSF 页面中存在问题?