【问题标题】:get instance of bean within a sessionscope via session.getAttribute通过 session.getAttribute 获取会话范围内的 bean 实例
【发布时间】:2012-10-15 12:12:30
【问题描述】:

在我的(JSF,Servlet 3.0)会话范围内有类的实例。如何使用 sessionscope 中提供的名称获取类的实例?

例如,在我的会话中有一个 MyBean 的实例:

classes-ManagedBean-class com.MyBean=Bean: Managed Bean [class com.MyBean] with qualifiers [@Any @Default @Named]; Instance: com.MyBean@40a6d41f

在 java 代码中,我想检索 MyBean 的实际实例:

HttpSession session = us.getHttpSession();
MyBean mybean = (MyBean) session.getAttribute("???");

我应该为 '???' 提供哪个值

【问题讨论】:

    标签: jsf-2 jboss-weld servlet-3.0


    【解决方案1】:

    这就是你所追求的:

    FacesContext context = FacesContext.getCurrentInstance();
    MyBean mybean =  (MyBean) context.getExternalContext().getSessionMap().get("myBean");
    

    注意 myBean 是托管 bean 的名称

    例如@ManagedBean(name = "myBean "),如果没有指定(name = "myBean "),则默认与类名相同,首字母小写

    【讨论】:

    • 是的,通常这会起作用。但我正在使用焊接,因此无法通过此检索实例
    • 你看过getSessionMap()吗,看看那里有什么键和值...可能会给你一个提示
    【解决方案2】:

    以上是从 SessionMap 中检索到的。我通过再次在 sessionmap 中明确放置一个键来解决问题。现在可以了

    【讨论】:

      猜你喜欢
      • 2013-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-06
      • 2017-11-26
      • 1970-01-01
      • 2012-08-11
      • 1970-01-01
      相关资源
      最近更新 更多