I am developing a JSF 2 Portlet, but i need get global session variable.
The request works fine with:
FacesContext facesContext = FacesContext.getCurrentInstance();
PortletRequest request = (PortletRequest) facesContext.getExternalContext().getRequest();
But the session is null:
PortletSession session = request.getPortletSession(false);
if put this code in liferay-portlet.xml file works fine, but i can't do IPC: Inter Portlet Comunication
<!-- Portlet session -->
<private-request-attributes>false</private-request-attributes>
<private-session-attributes>false</private-session-attributes>
How i get and set variables session without use the last code?
Thanks
Today i i tried with this:
FacesContext facesContext = FacesContext.getCurrentInstance();
PortletRequest request = (PortletRequest) facesContext.getExternalContext().getRequest();
HttpServletRequest httpRequest = PortalUtil.getHttpServletRequest(request);
HttpSession session = httpRequest.getSession(true);
System.out.println(session.getAttribute("XXXX"));
but is null
<private-session-attributes>false</private-session-attributes>
with Liferay Faces has been known to cause memory leaks. Use at your own risk!I solved my problem configuring liferay-portlet.xml
1.) I changed the liferay-portlet.xml only with:
<private-session-attributes>false</private-session-attributes>
2.) In the Java Class i created method:
FacesContext facesContext = FacesContext.getCurrentInstance();
PortletRequest request = (PortletRequest) facesContext.getExternalContext().getRequest();
PortletSession session = request.getPortletSession(false);
If you get session attributes
session.getAttribute("XXXXXX",PortletSession.APPLICATION_SCOPE);
If you set session attributes
session.setAttribute("NAME","VALUE",PortletSession.APPLICATION_SCOPE);