使用 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。