我有一个基于jsf的Web应用程序,使用hibernate进行持久化。我还使用Hibernate envers进行审计,因此我想实现自定义RevisionListener以将当前用户名保存在修订信息中。但是FacesContext.getCurrentInstance()
返回null。
在org.hibernate.envers.RevisionListener
实施中获取用户名的最佳方法是什么。
public class RevisionListener implements org.hibernate.envers.RevisionListener {
@Override
public void newRevision(Object object) {
Revinfo revInfo = (Revinfo)object;
revInfo.setUsername(getUserName());
}
private String getUserName() {
//FacesContext.getCurrentInstance() throws Nullpointerexception
Object request = FacesContext.getCurrentInstance().getExternalContext().getRequest();
if (request instanceof HttpServletRequest) {
return ((HttpServletRequest)request).getRemoteUser();
}
return null;
}
}