我在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。 我究竟做错了什么?
答案 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
<private-session-attributes>false</private-session-attributes>