将liferay主题java方法中设置的会话对象获取到portlet doView()方法中

时间:2016-04-20 15:58:13

标签: java session liferay liferay-theme

我在主题中有以下方法:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)throws IOException,             ServletException {
  ((HttpServletRequest) request).getSession().setAttribute("test", "abc");
   }

我试图在portlet的doView方法中获取上面的会话对象。

HttpSession httpSession =PortalUtil.getHttpServletRequest(renderRequest).getSession();
System.out.println("httpSession obj"+(String)httpSession.getAttribute("test"));

我甚至尝试使用如下:

HttpServletRequest request1 =PortalUtil.getHttpServletRequest(renderRequest);
HttpServletRequest originalRequest = PortalUtil.getOriginalServletRequest(request1);
HttpSession httpsession = originalRequest.getSession();
System.out.println("httpSession ==> " + httpsession);//session object gets printed
System.out.println("test "+httpsession.getAttribute("test"));//null

当我尝试从doview方法获取时,我得到null值。任何人都可以建议如何从主题到门户

获取值

1 个答案:

答案 0 :(得分:0)

您只能使portletRequest适应ServletRequest界面。此外,您还需要PortalUtil.getOriginalHttpServletRequest()

Here's some more information关于两者之间的区别。

你应该用吗?否。

我无法想象主题需要写入会话的内容。并且甚至可能没有定义执行顺序。

你应该用什么?我不知道,因为我字体知道你在第一时间想要实现的目标