Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在liferay中登录后声明的事件_Liferay - Fatal编程技术网

在liferay中登录后声明的事件

在liferay中登录后声明的事件,liferay,Liferay,我使用liferay 5.2和tomcat 6 我想在用户连接到我的应用程序时保存idportal和日期登录 在liferay被宣誓作证 我应该找到负责登录的事件 我确实使用了一个代码,该代码将在此事件后进行更新:onAfterCreate import com.liferay.portal.model.User; ......... ........ public void onAfterCreate(User user) throws ModelListenerException

我使用liferay 5.2和tomcat 6

我想在用户连接到我的应用程序时保存idportal和日期登录

在liferay被宣誓作证

我应该找到负责登录的事件

我确实使用了一个代码,该代码将在此事件后进行更新:onAfterCreate

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)
更新:

我想显示已连接用户的屏幕名和登录日期

我已经使用此代码来显示ScreenName
user.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每次处理可能有或可能没有登录用户的请求时运行。