0

我正在尝试设置可以跨页面操作的会话,我能够使用此代码设置会话

HttpSession session1 = request.getSession(false);
String foo = (String) session1.getAttribute("password");
session1.setAttribute("password","authenticated");
out.println(foo);

这段代码是用自定义 JSP 钩子 ( Journal_content/view.jsp )编写的

我还检查了会话是否保存在浏览器上并且它在那里。当我从一页转到另一页时,我无法阅读会话,所以它要求我输入密码。

谁能告诉我如何在 Liferay 中制作这个?

4

2 回答 2

3

我认为您可以使用PortletSession而不是HttpSession这样:

PortletSession portletSession = renderRequest.getPortletSession();
portletSession.setAttribute("password", "authenticated", PortletSession.APPLICATION_SCOPE);

...以及获取属性:

String pwd = (String) portletSession.getAttribute("password", PortletSession.APPLICATION_SCOPE);

由于 liferay 的 OOTB portlet<private-session-attributes>false</private-session-attributes>在其中定义liferay-portlet.xml,上述代码session与整个门户共享。

liferay-portlet.xmlDTD 中关于使用的一个小注释<private-session-attributes>

private-session-attributes如果 portlet 不与门户共享会话属性,则将该值设置为 true。默认值是true。portal.properties 中的属性session.shared.attributes指定共享哪些会话属性,即使 private-session-attributes 值为 true。

让我知道这是否有帮助。

于 2012-09-13T14:05:43.040 回答
0

我在这里发布了我的答案,以将对象从 Hooks 共享到 Portlet。

如果要在 portlet 之间共享对象,则必须在原始 portlet 的 liferay-portlet.xml 文件中设置为 false。

于 2013-08-30T02:55:29.693 回答