在每个请求范围的bean中注入会话范围的bean

时间:2013-08-23 06:09:35

标签: session jsf-2 managed-bean

为了在会话中保留用户的基本信息(安全角色,个人数据等等),我创建了一个AppSession bean,我想知道每次注入是不是一个坏习惯支持bean对该会话bean的引用。

例如,在请求范围的bean中代替:

@ManagedBean
@RequestScoped
public class MyRequestBean {
     @ManagedProperty("#{appSession.user}")
     private User user;

     @ManagedProperty("#{appSession.roles}")
     private Roles[] roles;    
}

我想要这样的东西......

@ManagedBean
@RequestScoped
public class MyRequestBean {
     @ManagedProperty("#{appSession}")
     private AppSession appSession;
}

...并使用 appSession 检索用户和角色数据。

您如何看待这一点,这里有一些不良做法吗?

PS:对不起,我不是母语为英语的人

1 个答案:

答案 0 :(得分:2)

  

我想知道在每个支持bean中注入该会话bean的引用是不是一种坏习惯。

不是。它完成你想要的工作。只有其他方式可以通过ExternalContext#getSessionMap()Application#evaluateExpressionGet()手动抓取。但这些方式并不具有说服力,因此不太好[&34;实践。