首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动-instantiate会话bean?

自动-instantiate会话bean?
EN

Stack Overflow用户
提问于 2011-05-18 10:31:01
回答 2查看 1.6K关注 0票数 2

我有一个会话bean

代码语言:javascript
复制
<managed-bean>
  <managed-bean-name>vdcAddBean</managed-bean-name>
  <managed-bean-class>com.cloud.appsportfolio.jsf.vdc.beans.VDCAddBean</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
</managed-bean>

现在,我将这个豆子注入到一个请求中:

代码语言:javascript
复制
<managed-bean>
      <managed-bean-name>providerSelectionBean</managed-bean-name>
      <managed-bean-class>com.cloud.appsportfolio.jsf.sourcing.ProviderSelectionBean</managed-bean-class>
      <managed-bean-scope>request</managed-bean-scope>
      <managed-property>
        <property-name>vdcAddBean</property-name>
        <property-class>com.cloud.appsportfolio.jsf.vdc.beans.VDCAddBean</property-class>
        <value>#{sessionScope.vdcAddBean}</value> 
      </managed-property>
</managed-bean>

嗯,当我用vdcAddBean java代码访问providerSelectionBean时,我会收到一个NPE,因为vdcAddBean还没有初始化。如果我在菜单中第一位,在后端有vdcAddBean并返回到providerSelectionBean的页面中,这一切都很好,因为vdcAddBean似乎已经初始化了。

问题是:在访问vdcAddBean bean时,我如何强制providerSelectionBean初始化(如果为null)?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-18 11:47:20

替换

代码语言:javascript
复制
<value>#{sessionScope.vdcAddBean}</value> 

通过

代码语言:javascript
复制
<value>#{vdcAddBean}</value> 

让JSF自动创建bean。

票数 2
EN

Stack Overflow用户

发布于 2011-05-18 11:03:08

JSF存储在ExternalContext中,您可以使用以下方法getSessionMap检索包含它们的映射。

这个映射的关键应该是托管bean名称,所以您也许可以检查null,如果是,那么尝试实例化您的bean并将其直接放到sessionMap中?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6043259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档