2016-06-27 10 views
0

私は2つのポートレットを持ち、1つはMVCポートレットで、もう1つはJSFポーレットです。 MVCポートレットから別のポートレットに属性を送信します。 MVCポートレットでLiferay set 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); 
.... 

およびその他のJSFポートレットで:

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

しかしたTestStringの値は常にnullを返します。

2ポートレットの両方がLiferayの-portlet.xmlの中で設定を持っている:

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

私はLiferayを持つ新しいです。手伝ってくれてありがとう!

+0

いずれかお手伝いできますか? –

答えて

0

すなわち、属性名の前に「LIFERAY_SHARED_」を追加してください:また、あなたがそれを指定することで、このプレフィックスを変更することができます

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

:同じ名前でそれを読んで、その後

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

そして、 portal-ext.properties:

+0

ありがとうございました、しかし、私はJSFポートレットでセッション属性を印刷するとき、それはまだ、null値 –

+0

を返す: '列挙EN = session.getAttributeNames();'
'しばらく(en.hasMoreElements()){' ' System.out.println(en.nextElement()); ' '} ' 結果: ' javax.portlet.faces.viewIdHistory.view' –

0

プロパティを設定する必要があります。"private-session-attributes"をfalseにするLiferay-portlet.xml各ポートレットのファイル。 “<portlet>”タグ内に次の行を追加してください:

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

私はすでにLiferayの-portlet.xmlの中でそれを入れています。あなたは上にそれを見ることができます –

関連する問題