我有一个Liferay应用程序,其中用户有“会员计划”。当用户登录时,我需要检查他们的会员计划是否已过期并向他们显示警告消息。 (会员计划独立于登录功能。即使他/她的会员计划已过期,用户仍可以登录。)
我想过创建一个登录后的动作。但我无法从此处或我创建的任何其他挂钩访问我的服务构建器方法(MemberPlanLocalServiceUtil.isPlanExpired()
)。
我应该用什么方法来解决这个问题?这里需要一个ext插件吗?或者我可以做其他事情吗?
答案 0 :(得分:0)
可以使用applicationContext.xml实现,在WEB-INF中创建一个applicationContext.xml,将所有bean引用放在其中。 在Web.xml和侦听器类中设置context参数。
上下文参数
<context-param>
<param-name>portalContextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
听众类
<listener>
<listener-class>com.liferay.portal.kernel.spring.context.PortletContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>com.liferay.portal.kernel.servlet.SerializableSessionAttributeListener</listener-class>
</listener>
<listener>
<listener-class>com.liferay.portal.kernel.servlet.HookContextListener</listener-class>
</listener>
作为参考,您可以查看此帖子 http://www.liferay.com/zh/web/raymond.auge/blog/-/blogs/custom-velocity-tools-and-liferay-6-0
答案 1 :(得分:0)
您可以将“登录后操作”添加到MemberPlan-Portlet(插件)。为此,您需要为portlet添加挂钩。 portlet可以扩展login.events.post=com.mypackage.MyLoginPostAction
,详情请参阅
http://www.liferay.com/documentation/liferay-portal/6.1/development/-/ai/extending-and-overriding-%3Cem%3Eportal-properties-lt-e-1。
答案 2 :(得分:0)
我最终解决了这个问题。 (这是需要快速解决方案的一种情况,而且是一种肮脏的解决方案)
这就是我做的事情
我添加了一个LoginAction
,其中我设置了一个会话属性:
public void run(HttpServletRequest request, HttpServletResponse response) throws ActionException {
HttpSession session = request.getSession();
session.setAttribute("LIFERAY_SHARED_checkMemberExpiry", true);
}
然后,在主页上的portlet中,检查是否设置了此会话属性,并在需要时显示我的警告消息。