2016-06-27 1 views
0

J'ai 2 portlets, l'un est MVC Portlet et l'autre est JSF Porlet. Je souhaite envoyer un attribut du portlet MVC à un autre.Liferay set portlet Valeur de session

dans MVC portlets:

 
@Override 
    public void processAction(ActionRequest actionRequest, 
      ActionResponse actionResponse) throws IOException, PortletException { 


     PortletSession portletSession = actionRequest.getPortletSession(); 
     portletSession.setAttribute("example", "SET ATTR PROCESS ACTION", 
       PortletSession.APPLICATION_SCOPE); 
.... 

et dans d'autres JSF portlets:

 
FacesContext facesContext = FacesContext.getCurrentInstance(); 
PortletRequest request = (PortletRequest)facesContext.getExternalContext().getRequest(); 
PortletSession session = request.getPortletSession(false); 
String testString = (String) session.getAttribute("example",PortletSession.APPLICATION_SCOPE); 

Mais la valeur de testString retourne toujours NULL.

deux 2 portlet ont config dans Liferay-portlet.xml:

<private-session-attributes>false</private-session-attributes> 

Je suis nouveau avec Liferay. Merci pour l'aide!

+0

N'importe qui peut aider? –

Répondre

0

Essayez d'ajouter « LIFERAY_SHARED_ » avant le nom d'attribut, à savoir:

portletSession.setAttribute("LIFERAY_SHARED_example", "SET ATTR PROCESS ACTION", PortletSession.APPLICATION_SCOPE); 

Et alors lu par le même nom:

String testString = (String) session.getAttribute("LIFERAY_SHARED_example", PortletSession.APPLICATION_SCOPE); 

En outre, vous pouvez modifier ce préfixe en spécifiant dans portal-ext.properties:

session.shared.attributes=CUSTOM_PREFIX_ 
+0

Merci, mais il revenir encore une valeur nulle –

+0

Quand j'imprimer attribut de session dans JSF portlet: 'Enumeration en = session.getAttributeNames()' '
while (en.hasMoreElements()) {' ' System.out.println (en.nextElement()); '' } ' Le résultat: ' javax.portlet.faces.viewIdHistory.view' –

0

Vous devez définir la propriété "private-session-attributes" à false dans le Liferay-portlet.xml fichier de chaque portlet. Ajoutez la ligne suivante dans le “<portlet>” tag:

<private-session-attributes>false</private-session-attributes> 
+0

Je l'ai mis dans Liferay-portlet.xml déjà. vous pouvez le voir ci-dessus –