在每个请求范围的bean中注入会话范围的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:对不起,我不是以英语为母语的

我想知道在每个支持bean中注入该会话bean的引用是否是一种糟糕的做法

事实并非如此。它能完成你想要的工作。唯一的其他方法是通过ExternalContext#getSessionMap()Application#evaluateExpressionGet()手动抓取它。但这些方法并不是陈述性的,因此是一种"不太好"的做法。

相关内容

  • 没有找到相关文章

最新更新