登录后向用户显示警告消息

时间:2012-10-18 10:02:56

标签: liferay liferay-6

我有一个Liferay应用程序,其中用户有“会员计划”。当用户登录时,我需要检查他们的会员计划是否已过期并向他们显示警告消息。 (会员计划独立于登录功能。即使他/她的会员计划已过期,用户仍可以登录。)

我想过创建一个登录后的动作。但我无法从此处或我创建的任何其他挂钩访问我的服务构建器方法(MemberPlanLocalServiceUtil.isPlanExpired())。

我应该用什么方法来解决这个问题?这里需要一个ext插件吗?或者我可以做其他事情吗?

3 个答案:

答案 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中,检查是否设置了此会话属性,并在需要时显示我的警告消息。