【问题标题】:Access JSF bean from class which is neither servlet nor bean从既不是 servlet 也不是 bean 的类访问 JSF bean
【发布时间】:2023-03-05 03:14:02
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: java jsf javabeans code-injection


    【解决方案1】:

    如果提到的类的实例与调用FacesServlet的HTTP请求线程在同一个线程中运行,那么你可以通过FacesContext然后Application#evaluateExpressionGet()来获取它。另见Get JSF managed bean by name in any Servlet related class

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

    “最佳方式”取决于具体的功能要求,问题中并不清楚,所以我无法指出正确的方式,也无法给出任何启动示例。

    【讨论】:

      猜你喜欢
      • 2012-08-27
      • 2020-02-21
      • 2013-07-26
      • 2020-11-16
      • 1970-01-01
      • 1970-01-01
      • 2013-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多