我想填充在我的JSF页面的DataTable。 这里是我做的事:我第一次将用户添加到谁登录到系统中我LoginBean会话:
@ManagedBean(name = "loginBean")
@Dependent
@SessionScoped
public void loginCheck() {
Customer currentCustomer = new Customer(rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getString(6), rs.getString(7),accounts);
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("currentCustomer", currentCustomer);
// I skipped username and password check from
// and getting customer information from database
// not to make the code too log, i do them in my project
}
然后我想,以填补当前用户的账户信息的DataTable。 这里是我的客户类的相关部分:
@ManagedBean(name = "customer")
@SessionScoped
public class Customer implements Serializable {
private List<Account> accounts;
public void setAccounts(ArrayList<Account> accounts){
this.accounts=accounts;
}
public List<Account> getAccounts(){
return accounts;
}
这里是JSF页面我填充我的数据:
<h:form>
<h:dataTable id="accountsTable" value="#{customer.accounts}" var="account">
<h:column>
<f:facet name="header">Account Number</f:facet>
#{account.accountNumber}
</h:column>
</h:dataTable>
</h:form>
但问题是,因为我一直在会话中的客户,因为它确实是空值=“#{} customer.accounts”返回null。 不知何故,我需要获得当前会话对象。 我试过了:
value="#{FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("currentCustomer");}"
不过,这并不见FacesContext中()在JSF页面。 我想先得到客户对象,然后达到它的帐户列表,这是一个ArrayList。 那么,怎样才能做到这一点? 任何人都可以帮忙吗?
谢谢