2013-11-21 70 views
0

我正在使用Spring-MVC和Liferay,並且需要通過會話將屬性從一個Portlet傳遞到另一個Portlet。通過會話將屬性從一個Portlet傳遞到另一個Portlet

我需要用HttpSession而不是PortletSession,或者是APPLICATION_SCOPE設置足夠嗎?

我需要做兩件事情

  • 參數設爲共享/應用程序會話

  • 從會話閱讀並使用它傳遞給視圖春Model

我想要做這樣的第一個:

PortletSession session = request.getPortletSession(); 
session.setAttribute("foo", request.getParameter("foo"), 
    PortletSession.APPLICATION_SCOPE); 
response.sendRedirect("/somewhere"); 

然後第二是這樣的:

@RequestMapping 
public String view(PortletSession session, Model model){ 
    if (session.getAttribute("foo") != null) { 
     model.addAttribute("foo", session.getAttribute("foo").toString()); 
    } 
return "somewhere/view"; 
} 

然後我嘗試通過簡單地利用${foo}在我的JSP來顯示它,但沒有顯示出來。

請問您可以分享任何建議嗎?

回答

1

我試圖以不好的方式從會話中獲取屬性。我需要指定範圍,同時從PortletSession中檢索屬性。

它更改爲

@RequestMapping 
public String view(RenderRequest request, Model model){ 
    PortletSession session = request.getPortletSession(); 
    if (session.getAttribute("foo", 
      PortletSession.APPLICATION_SCOPE) != null) { 
     model.addAttribute("foo", session.getAttribute("foo", 
      PortletSession.APPLICATION_SCOPE).toString()); 
    } 
    return "somewhere/view"; 
} 

固定的問題。

而且有必要兩個portlet這樣的模塊中設置專用會話屬性設置爲false liferay-portlet.xml

<portlet> 
    <!-- ..some previous settings and then --> 
    <private-session-attributes>false</private-session-attributes> 
</portlet> 

文件:http://www.liferay.com/community/wiki/-/wiki/Main/Portlet+to+Portlet+Communication

相關問題