我必须为User模型创建自定义审核,以跟踪删除用户的人。我曾尝试为User模型创建Liferay模块侦听器,但无法获得删除用户的详细信息。
是否有任何方法可以获取有关谁在Liferay模块侦听器中对用户模型进行了更改的详细信息?
我的Liferay环境详细信息
/*
* 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);
}
}
答案 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。删除事件已经可以追踪了。您可以看到“审核事件”和“系统事件”表。
您可以使用审核事件框架进行自定义。