共享会话属性?

时间:2013-11-29 09:38:30

标签: liferay session-variables

我在liferay门户中有两个portlet:一个MVC portlet和一个Vaadin portlet。

第一个以这种方式设置会话属性:

long serviceId = 1;
PortletSession portSession = renderRequest.getPortletSession();
portSession.setAttribute("serviceId",   serviceId, PortletSession.APPLICATION_SCOPE);

第二个读到它:

PortletRequest portletRequest = VaadinPortletService.getCurrentPortletRequest();
long serviceId = (long) portletRequest.getPortletSession().getAttribute("serviceId", PortletSession.APPLICATION_SCOPE)

问题是第二个portlet读取的会话属性为null但不是1。 我究竟做错了什么?

2 个答案:

答案 0 :(得分:1)

请在<private-session-attributes>false</private-session-attributes>中为两个portlet添加liferay-portlet.xml

此标签的详细信息是根据DTD:

  

元素:private-session-attributes设置   如果portlet没有,则private-session-attributes值为true   与门户共享会话属性。默认值是true。   portal.properties中的属性“session.shared.attributes”   指定即使在何时共享哪些会话属性   private-session-attributes值为true。

     

数据类型:#PCDATA

答案 1 :(得分:1)

添加

session.shared.attributes = Shared
在liferay portal-ext.properties文件中。 以关键字“共享”开头的所有变量都将是应用程序作用域。 如果这样做,则无需设置

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