2016-06-27 2 views
0

포틀릿 2 개, MVC 포틀릿 1 개, JSF 포틀릿 1 개가 있습니다. MVC 포틀릿에서 다른 MVC로 Attribute를 보내려고합니다. MVC 포틀릿에서 Liferay 설정 포틀릿 세션 값

:
 
@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를 돌려줍니다.

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

내가하는 Liferay에 새로운 오전 :

이 포틀릿 모두

은을 Liferay-portlet.xml의에서 설정이있다. 도와 주셔서 감사합니다! 속성 이름 앞에 "LIFERAY_SHARED_"를 추가하는

+0

누구든 도움이 될만한 사람이 있습니까? –

답변

0

시도, 즉 :

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

그리고 같은 이름을 읽어 또한

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

, 당신은 그것을 지정하여이 접두사를 변경할 수 있습니다 portal-ext.properties :

session.shared.attributes=CUSTOM_PREFIX_ 
+0

감사합니다,하지만 난 JSF 포틀릿에서 세션 속성을 인쇄 할 때 여전히 null 값 –

+0

을 반환 : '열거 엔 = session.getAttributeNames(); '
'동안 (en.hasMoreElements을()) {' ' 에서 System.out.println (en.nextElement());' '}' 결과 : 이미하는 Liferay-은 portlet.xml에 넣어 한 'javax.portlet.faces.viewIdHistory.view' –

0

당신은 속성을 설정해야합니다 "private-session-attributes"을 거짓으로 Liferay-portlet.xml 각 포틀릿의 파일. “<portlet>” 태그 안에 다음 줄을 추가하십시오.

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

. 너는 그것을 위에 볼 수있다. –