使用 Portlet 會話
這是自 JSR 168 以來一直存在的一種方法。它允許我們使用 portlet 會話共享屬性。一個 portlet 會話可以有不同型別的範圍:
- Portlet 範圍(僅在 portlet 中可用的屬性)
- 應用範圍(整個應用程式中可用的屬性[war])
為了使用這種方法,我們不需要在 portlet 配置中建立任何條目,因為 portlet 會話在 portlet 請求中隨時可用:
PortletSession session = renderRequest.getPortletSession();
session.setAttribute("attribute-name","attribute-value", PortletSession.APPLICATION_SCOPE);
要麼
PortletSession session = renderRequest.getPortletSession();
session.setAttribute("attribute-name","attribute-value", PortletSession.PORTLET_SCOPE);
該屬性只能從相應的範圍中檢索。與 portlet 範圍中設定的屬性類似,我們需要使用它來獲取它
PortletSession session = renderRequest.getPortletSession();
String attributeValue = (String) session.getAttribute("attribute-name", PortletSession.PORTLET_SCOPE);
這種方法的主要限制是在應用程式範圍之外缺少其他 portlet 之間的共享。為了克服這個問題,有一個 liferay 特定的方法來新增 <private-session-attributes
> liferay-portlet.xml
<private-session-attributes>false</private-session-attributes>
<header-portlet-css>/css/main.css</header-portlet-css>
<footer-portlet-javascript>/js/main.js</footer-portlet-javascript>
<css-class-wrapper>{portlet-name}</css-class-wrapper>
</portlet>
對於所有設定和檢索屬性的 portlet。