如何获得和使用会话对象来填充JSF的DataTable?(How to get and use a

2019-11-02 06:26发布

我想填充在我的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。 那么,怎样才能做到这一点? 任何人都可以帮忙吗?

谢谢

Answer 1:

你可以通过它的键得到它: #{currentCustomer}在EL背景。

并为您的信息,目前都面临着环境和会话属性映射通过隐含的EL对象可用: #{facesContext}#{sessionScope}分别。 当然,后者可用于获取会话映射以前把对象为好。

此外,它会是明智的移动的任何进一步之前专注于JSF基础。



文章来源: How to get and use a session object to populate a datatable in JSF?