从GenericFacesPortlet获取会话范围的bean

时间:2011-11-25 16:47:51

标签: java session jsf portlet jsf-1.2

是否有可能在扩展GenericFacesPortlet的类中访问sesssion-scoped bean?

portlet是否知道FacesContext


我想达到什么目的?

我想通过serveResource()方法提供文件。应该从实现方法getResourceContent()的bean中检索文件的内容。

但不幸的是,我在致电null时收到FacesContext.getCurrentInstance()


供您参考:我正在使用版本2.1.0.FINAL中的JBoss Portlet Bridge

1 个答案:

答案 0 :(得分:1)

FacesContext在GenericFacesPortlet中始终为null。 GenericFacesPortlet创建桥并初始化它。 Bridge实际上是创建FacesContext并执行JSF生命周期。从GenericFacesPortlet的角度来看,尚未创建FacesContext(null)。

为了达到你想要的效果,你可以从会话中获取bean。为此,您必须使用:


YourBean yourBean = (YourBean) request.getPortletSession().getAttribute("yourBeanName");

其中“yourBeanName”是您在定义YourBean时在faces-config.xml中使用的名称。

干杯!