Portal:Liferay 6.0
在我的portlet中,我需要在application_Scope上维护一个对象,以便所有登录的用户都可以使用它。作为一个解决方案,我认为PortletContext将是我应该使用的东西。因此我继续将它存储在portletcontext中,就像这样
PortletContext context = renderRequest.getPortletSession().getPortletContext();
context.setAttribute("attr1", "test");
现在当用户注销时我想从上下文中操作这个对象,为此我编写了一个捕获servlet.session.destroy.events的钩子。代码如下所示
public class MySessionDestroyAction extends SessionAction {
@Override
public void run(HttpSession session) throws ActionException {
ServletContext context = session.getServletContext();
String temp = (String) context.getAttribute("attr1");
context.
}
}
由于上面的类有HttpSession对象,我可以得到servletcontext而不是portlet上下文,我仍然试过但是我无法获取我在portlet中设置的属性值。
我想我应该在Servletcontext中设置我的对象,然后尝试,因为我的portlet我修改了我的代码以从PortalUtil类中获取servlet上下文对象
HttpServletRequest httpReq = PortalUtil.getHttpServletRequest(request);
ServletContext scontext = httpReq.getSession().getServletContext();
scontext.setAttribute("attr1", "test");
即使这样做,MySessionDestroyAction类也没有获取context属性。谁能解释这种行为?此外,如果这不是正确的实施方式,任何人都可以提出我应该使用的方法。
谢谢