【发布时间】:2023-03-05 03:14:02
【问题描述】:
我有一个 JSF 会话范围 bean,并且我在该 bean 中保存了当前用户(登录)信息。我也有一个既不是 servlet 也不是 bean 的类,它只是一个类。我想访问 jsf bean 并获取类中的当前用户信息。我找到了 servlet 访问 jsf bean 的解决方案,但我找不到解决这个问题的方法。有什么办法吗?
谢谢!
【问题讨论】:
标签: java jsf javabeans code-injection
我有一个 JSF 会话范围 bean,并且我在该 bean 中保存了当前用户(登录)信息。我也有一个既不是 servlet 也不是 bean 的类,它只是一个类。我想访问 jsf bean 并获取类中的当前用户信息。我找到了 servlet 访问 jsf bean 的解决方案,但我找不到解决这个问题的方法。有什么办法吗?
谢谢!
【问题讨论】:
标签: java jsf javabeans code-injection
如果提到的类的实例与调用FacesServlet的HTTP请求线程在同一个线程中运行,那么你可以通过FacesContext然后Application#evaluateExpressionGet()来获取它。另见Get JSF managed bean by name in any Servlet related class
如果提到的类的实例在不同的线程中运行,那么您需要预先将所需的信息传递给类的构造函数、方法或将所需的信息存储在 JSF webapp 的一些共享数据源中并且独立类可以访问,例如数据库、本地磁盘文件系统文件或 JNDI 上下文。根据上下文和环境,CDI 的@Named+@Inject 也可能是解决方案。
“最佳方式”取决于具体的功能要求,问题中并不清楚,所以我无法指出正确的方式,也无法给出任何启动示例。
【讨论】: