0

我的要求是我需要将用户购物车对象存储在 portlet 会话中。每当用户将项目添加到购物车中时,应该更新用户购物车对象并再次将其保存到 portlet 会话中。每当用户注销/会话到期时,应将这些用户购物车对象详细信息保存到数据库中。我可以将对象保存在 portlet 会话中,但是当用户注销/会话过期时,详细信息不会保存到数据库中。我使用 Hook 覆盖了“LogoutPreAction”类。但是在运行方法中我无法获取 PortletSession 对象。如何在“MyCustomLogoutPreAction”类的 run 方法中获取 portlet 会话对象?

4

2 回答 2

0

尝试 Servlet 会话销毁事件。@see "servlet.session.destroy.events" 属性在 portal.properties

    #
    # Servlet session destroy event
    #
    servlet.session.destroy.events=
于 2015-06-04T11:30:01.777 回答
0

如果您的业务数据必须在 UI 层会话的生命周期中存活,最好将它们与前端会话完全分离。毕竟,不能保证曾经调用过会话销毁事件(例如,在应用服务器关闭甚至崩溃时)。因此,建议在每次更改购物车时更新数据库,并使用用户标识符键入该数据库数据。

这巧妙地使您的业务层保持清洁并且独立于实际前端。另外,您不依赖于不能保证永远触发的事件。

于 2015-06-04T14:45:55.880 回答