FacesContext.getCurrentInstance()在RevisionListener中返回null

时间:2015-06-12 13:18:11

标签: java hibernate hibernate-envers

我有一个基于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;
   }

}

0 个答案:

没有答案