在liferay中登录后声明的事件
我使用liferay 5.2和tomcat 6 我想在用户连接到我的应用程序时保存idportal和日期登录 在liferay被宣誓作证 我应该找到负责登录的事件 我确实使用了一个代码,该代码将在此事件后进行更新:onAfterCreate在liferay中登录后声明的事件,liferay,Liferay,我使用liferay 5.2和tomcat 6 我想在用户连接到我的应用程序时保存idportal和日期登录 在liferay被宣誓作证 我应该找到负责登录的事件 我确实使用了一个代码,该代码将在此事件后进行更新:onAfterCreate import com.liferay.portal.model.User; ......... ........ public void onAfterCreate(User user) throws ModelListenerException
import com.liferay.portal.model.User;
.........
........
public void onAfterCreate(User user)
throws ModelListenerException
{
System.out.println("-------------- User Creation::" + user.getScreenName());
try
{
Employee employee = getEmployee(user.getScreenName());
if (employee != null)
updateEmployee(employee, user, false);
else
updateEmployee(new Employee(), user, true);
}
catch (Exception e) {
e.printStackTrace();
}
}
所以我应该使用与前面代码相同的代码
idportal是:user.getScreenName()
我认为登录日期是user.getLastLoginDate()
但我没有找到登录后将贴花的事件
已更新:
我跟随你的脚步
在liferay-hook.xml中,我添加了以下代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hook PUBLIC "-//Liferay//DTD Hook 6.1.0//EN" "http://www.liferay.com/dtd/liferay-hook_6_1_0.dtd">
<hook>
<portal-properties>portal.properties</portal-properties>
</hook>
package com.liferay.hooks.user;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.liferay.portal.kernel.events.Action;
import com.liferay.portal.kernel.events.ActionException;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.model.User;
import com.liferay.portal.theme.ThemeDisplay;
public class LoginPostAction extends Action
{
public void run(HttpServletRequest request, HttpServletResponse response)
throws ActionException {
System.out.println(" the user is connected ");
ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(WebKeys.THEME_DISPLAY);
User user = themeDisplay.getUser();
System.out.println("user "+user.getScreenName());
}
}
login.events.post=com.liferay.hooks.user.LoginPostAction
servlet.service.events.post=com.liferay.hooks.user.LoginPostAction
我创建了一个java类:loginpostation.java
package com.liferay.hooks.user;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.liferay.portal.kernel.events.Action;
import com.liferay.portal.kernel.events.ActionException;
public class LoginPostAction
{
public void run(HttpServletRequest request, HttpServletResponse response)
throws ActionException {
System.out.println(" the user is connected ");
}
}
在本例中,导入com.liferay.portal.kernel.events.Action;未使用
正如您所看到的,我希望使用此代码在登录后显示消息
但在部署此示例时,出现了以下错误:
Caused by: java.lang.ClassCastException: com.liferay.hooks.user.LoginPostAction cannot be cast to com.liferay.portal.kernel.events.Action
at com.liferay.portal.deploy.hot.HookHotDeployListener.initEvent(HookHotDeployListener.java:591)
at com.liferay.portal.deploy.hot.HookHotDeployListener.initEvents(HookHotDeployListener.java:643)
at com.liferay.portal.deploy.hot.HookHotDeployListener.doInvokeDeploy(HookHotDeployListener.java:237)
at com.liferay.portal.deploy.hot.HookHotDeployListener.invokeDeploy(HookHotDeployListener.java:98)
... 31 more
Caused by: java.lang.NullPointerException
at com.liferay.hooks.user.LoginPostAction.run(LoginPostAction.java:25)
at com.liferay.portal.kernel.events.InvokerAction.run(InvokerAction.java:52)
at com.liferay.portal.events.EventsProcessorImpl.processEvent(EventsProcessorImpl.java:92)
更新:
我想显示已连接用户的屏幕名和登录日期
我已经使用此代码来显示ScreenNameuser.getScreenName()
,对于登录日期,我认为应该使用user.getLastLoginDate(
)并使用此导入
import com.liferay.portal.model.User;
但是我没有找到在run函数中使用此代码的方法
package com.liferay.hooks.user;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.liferay.portal.kernel.events.Action;
import com.liferay.portal.kernel.events.ActionException;
public class LoginPostAction extends Action
{
public void run(HttpServletRequest request, HttpServletResponse response)
throws ActionException {
System.out.println(" the user is connected ");
// here I want to display the ScreenName and login date of user connected
}
}
我尝试使用以下代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hook PUBLIC "-//Liferay//DTD Hook 6.1.0//EN" "http://www.liferay.com/dtd/liferay-hook_6_1_0.dtd">
<hook>
<portal-properties>portal.properties</portal-properties>
</hook>
package com.liferay.hooks.user;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.liferay.portal.kernel.events.Action;
import com.liferay.portal.kernel.events.ActionException;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.model.User;
import com.liferay.portal.theme.ThemeDisplay;
public class LoginPostAction extends Action
{
public void run(HttpServletRequest request, HttpServletResponse response)
throws ActionException {
System.out.println(" the user is connected ");
ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(WebKeys.THEME_DISPLAY);
User user = themeDisplay.getUser();
System.out.println("user "+user.getScreenName());
}
}
login.events.post=com.liferay.hooks.user.LoginPostAction
servlet.service.events.post=com.liferay.hooks.user.LoginPostAction
我在portal.properties中生成以下代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hook PUBLIC "-//Liferay//DTD Hook 6.1.0//EN" "http://www.liferay.com/dtd/liferay-hook_6_1_0.dtd">
<hook>
<portal-properties>portal.properties</portal-properties>
</hook>
package com.liferay.hooks.user;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.liferay.portal.kernel.events.Action;
import com.liferay.portal.kernel.events.ActionException;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.model.User;
import com.liferay.portal.theme.ThemeDisplay;
public class LoginPostAction extends Action
{
public void run(HttpServletRequest request, HttpServletResponse response)
throws ActionException {
System.out.println(" the user is connected ");
ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(WebKeys.THEME_DISPLAY);
User user = themeDisplay.getUser();
System.out.println("user "+user.getScreenName());
}
}
login.events.post=com.liferay.hooks.user.LoginPostAction
servlet.service.events.post=com.liferay.hooks.user.LoginPostAction
但我有一个错误:
Caused by: java.lang.ClassCastException: com.liferay.hooks.user.LoginPostAction cannot be cast to com.liferay.portal.kernel.events.Action
at com.liferay.portal.deploy.hot.HookHotDeployListener.initEvent(HookHotDeployListener.java:591)
at com.liferay.portal.deploy.hot.HookHotDeployListener.initEvents(HookHotDeployListener.java:643)
at com.liferay.portal.deploy.hot.HookHotDeployListener.doInvokeDeploy(HookHotDeployListener.java:237)
at com.liferay.portal.deploy.hot.HookHotDeployListener.invokeDeploy(HookHotDeployListener.java:98)
... 31 more
Caused by: java.lang.NullPointerException
at com.liferay.hooks.user.LoginPostAction.run(LoginPostAction.java:25)
at com.liferay.portal.kernel.events.InvokerAction.run(InvokerAction.java:52)
at com.liferay.portal.events.EventsProcessorImpl.processEvent(EventsProcessorImpl.java:92)
您正在使用的侦听器是“模型侦听器”,它们用于添加\更新\删除事件 侦听登录事件。您可以执行以下操作:
liferayhook.xml
文件中,向hook
元素添加portal属性。比如说,
<hook>
<portal-properties>portal.properties</portal-properties>
</hook>
com.liferay.portal.kernel.events.Action
public void run(HttpServletRequest request, HttpServletResponse response)
throws ActionException;
谢谢你的回复,我已经更新了我的question@franco您在更新的问题中遗漏了第4步-错误消息清楚地表明非常感谢您,现在我想显示已连接用户的屏幕名和登录日期,我更新了我的问题我在使用以前的代码删除时出现错误NullPointerException:
servlet.service.events.post=com.liferay.hooks.user.loginpostation
。它将在Struts每次处理可能有或可能没有登录用户的请求时运行。