从类中访问JSF bean,既不是servlet也不是bean

时间:2012-03-29 19:57:06

标签: java jsf javabeans code-injection

我有一个JSF会话范围bean,我在该bean中保留当前用户(登录)信息。我也有一个既不是servlet也不是bean的类,它只是一个类。我想访问jsf bean并获取类中的当前用户信息。我找到了一个servlet访问jsf bean的解决方案,但我无法找到解决这个问题的方法。有没有办法做到这一点?

感谢!

1 个答案:

答案 0 :(得分:1)

如果提到的类的实例与调用FacesServlet的HTTP请求线程在同一个线程中运行,那么您可以通过FacesContext然后{{3}获取它}。另请参阅Application#evaluateExpressionGet()

如果所提到的类的实例在另一个线程中运行,那么您需要事先将所需信息传递给类的构造函数,方法或将所需信息存储在JSF webapp的某些共享数据源中并且独立类可以访问,例如数据库,本地磁盘文件系统文件或JNDI上下文。根据具体情况和环境,CDI的@Named + @Inject也可能是解决方案。

“最好的方式”取决于具体的功能要求,这个问题在问题上并不清楚,所以我不能指出正确的方法,也不能给出任何启动的例子。