我正在使用websphere portal 8.0并使用下面的api在一个面孔托管bean中设置会话变量..
PortletRequest request = (PortletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
PortletSession session=request.getPortletSession(false);
session.setAttribute("Name", pName,PortletSession.APPLICATION_SCOPE);
在另一个托管bean中的另一个请求中,我试图检索会话变量但是它返回null。这是一个单一的portlet应用程序。
PortletRequest request2 = (PortletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
PortletSession session=request2.getPortletSession(false);
session.getAttribute("Name",PortletSession.APPLICATION_SCOPE);
答案 0 :(得分:0)
如果您想在JSF中使用共享变量,请使用以下方法:
@SuppressWarnings("unchecked")
public static <T> T findBean(String beanName) {
FacesContext context = FacesContext.getCurrentInstance();
return (T) findBean(beanName, context);
}
@SuppressWarnings("unchecked")
public static <T> T findBean(String beanName, FacesContext context) {
return (T) context.getApplication()
.evaluateExpressionGet(context,
"#{" + beanName + "}", Object.class);
}
它在Web应用程序中获取ManageBean实例。然后,您可以访问方法get和set。