2016-06-27 32 views
0

Ich habe 2 Portlet, eines ist MVC Portlet und ein anderes ist JSF Porlet. Ich möchte Attribut von MVC Portlet zu einem anderen senden.Liferay Set Portlet Session-Wert

in MVC Portlet:

 
@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); 
.... 

und in anderen JSF Portlet:

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

Aber der Wert des teststring immer null zurück.

Beide 2 Portlet haben config in liferay-portlet.xml:

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

: Ich bin mit liferay. Danke für die Hilfe!

+0

Jeder kann helfen? –

Antwort

0

Try "LIFERAY_SHARED_" vor Attributnamen, dh hinzuzufügen:

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

Und dann liest es durch den gleichen Namen:

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

Außerdem können Sie diesen Präfix durch Angabe ändern in portal-ext.properties:

session.shared.attributes=CUSTOM_PREFIX_ 
+0

Vielen Dank, aber es immer noch einen Nullwert zurückgeben –

+0

Wenn i-Session Attribut in JSF-Portlet drucken: 'Enumeration en = session.getAttributeNames();'
'while (en.hasMoreElements()) {' ' System.out.println (en.nextElement()); '' } ' Das Ergebnis: ' javax.portlet.faces.viewIdHistory.view' –

0

Sie haben die Eigenschaft zu setzen haben "private-session-attributes" zu falsch in der Liferay-portlet.xml Datei von jedem Portlet. Fügen Sie die folgende Zeile innerhalb des “<portlet>” Tags hinzu:

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

ich es in liferay-portlet.xml bereits gesetzt worden. Sie können es oben sehen –