我的要求是我需要在portlet会话中存储user-cart对象。每当用户将项目添加到购物车时,应更新用户购物车对象并再次保存到portlet会话中。每当用户注销/会话到期时,这些用户购物车对象的详细信息都应保存到数据库中。我能够在portlet会话中保存对象,但是当用户注销/会话到期时,细节不会保存到数据库中。我使用Hook覆盖“LogoutPreAction”类。但是在run方法中,我无法获取PortletSession对象。如何在“MyCustomLogoutPreAction”类的run方法中获取portlet会话对象?
答案 0 :(得分:0)
尝试Servlet会话销毁事件。 @see在portal.properties
中查看“servlet.session.destroy.events”属性 #
# Servlet session destroy event
#
servlet.session.destroy.events=
答案 1 :(得分:0)
如果您的业务数据必须在UI层会话的生命周期中存在,那么最好将它们与前端会话完全分离。毕竟,不能保证会调用会话销毁事件(例如,在appserver关闭甚至崩溃时)。因此,建议在购物车的每次更改时更新数据库,然后用该用户的标识符键入该数据库。
这样可以使您的业务层保持干净,并且与实际前端无关。此外,您不依赖于无法保证永远触发的事件。