0

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

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

我应该使用什么方法来解决这个问题?这里需要一个ext插件吗?或者我可以做点别的吗?

4

3 回答 3

0

可以使用applicationContext.xml来实现,在WEB-INF中创建一个applicationContext.xml,把所有的bean引用都放在里面。在 Web.xml 和监听器类中设置上下文参数。

上下文参数

<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

于 2012-10-19T05:02:05.673 回答
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 .

于 2012-10-23T13:51:44.283 回答
0

我最终解决了这个问题。(这是需要快速解决方案的情况之一,而且是一个肮脏的解决方案)

这就是我所做的

我添加了一个LoginAction在其中设置会话属性的:

public void run(HttpServletRequest request, HttpServletResponse response) throws ActionException {
        HttpSession session = request.getSession();
        session.setAttribute("LIFERAY_SHARED_checkMemberExpiry", true);
}

然后,在主页上的 portlet 中,我检查是否设置了此会话属性,并在需要时显示我的警告消息。

于 2012-10-31T13:06:02.367 回答