Liferay模块侦听器:无法获取更改模型的人

时间:2019-05-29 14:22:23

标签: liferay liferay-7 liferay-ide

我必须为User模型创建自定义审核,以跟踪删除用户的人。我曾尝试为User模型创建Liferay模块侦听器,但无法获得删除用户的详细信息。

是否有任何方法可以获取有关谁在Liferay模块侦听器中对用户模型进行了更改的详细信息?


我的Liferay环境详细信息

  • Liferay门户网站:liferay-ce-portal-tomcat-7.0-ga5
  • 数据库:postgres(PostgreSQL)9.5.17
  • IDE:日食氧4.7.3a
/*
 * Below is the sample code that I have tried to create the Liferay module listener for the User model
 */
package com.test.useraudit.modellistner;

import org.osgi.service.component.annotations.Component;

import com.liferay.portal.kernel.exception.ModelListenerException;
import com.liferay.portal.kernel.model.BaseModelListener;
import com.liferay.portal.kernel.model.ModelListener;
import com.liferay.portal.kernel.model.User;

@Component(
    immediate = true,
    service = ModelListener.class
)

public class CustomUserModelListner extends BaseModelListener<User>{
    @Override
    public void onBeforeRemove(User user) throws ModelListenerException{
        System.out.println("In onBeforeRemove method");
        System.out.println("User detail :");
        System.out.println(user);
        super.onBeforeRemove(user);
    }

    @Override
    public void onAfterRemove(User user) throws ModelListenerException{
        System.out.println("In onAfterRemove method");
        System.out.println("User detail :");
        System.out.println(user);
        super.onAfterRemove(user);
    }
}

2 个答案:

答案 0 :(得分:1)

是的。

有一个名为ServiceContext的隐式线程局部变量,其中包含调用上下文的详细信息。

示例:

   @Override
    public void onBeforeRemove(User user) throws ModelListenerException{
            ServiceContext serviceContext =
                 ServiceContextThreadLocal.getServiceContext();

            System.out.println("Calling user:" + serviceContext.getUserId());
    }

答案 1 :(得分:0)

是的,这是可能的,其中包括Liferay中的OOTB。删除事件已经可以追踪了。您可以看到“审核事件”和“系统事件”表。

您可以使用审核事件框架进行自定义。