0

托管 bean 和钩子都在同一场战争中。我在 Tomcat 7 上使用 6.1 CE。

我试图在绑定到 logout.events.pre 的 Hook 的 run 方法期间从 ApplicationScoped bean 中删除一些数据。

使用 HttpServletRequest 调用 run 方法,并且我已经读过该 bean 应该可以作为该 HttpServletRequest 的属性或我可以从 HttpServletRequest 获得的 ServletContext 的属性来访问,但是这两种方法都返回 null。

我已经列举了所有的键,它只是不存在。

有谁知道如何实现我所需要的?

谢谢。

    @Override
public void run(HttpServletRequest req, HttpServletResponse res) {

    System.out.println("In custom pre LogoutAction....");

    ServletContext servletContext = req.getServletContext();

// DataBean dataBean = (DataBean) servletContext.getAttribute("com.xvest.hooks.DataBean");

// DataBean dataBean = (DataBean) req.getAttribute("dataBean");

    // Find loggedInUser and impersonatedUser.
    ThemeDisplay themeDisplay = (ThemeDisplay) req.getAttribute("THEME_DISPLAY");

    User loggedInUser = themeDisplay.getRealUser();
    User impersonatedUser = themeDisplay.getUser();

    // Fetch CompleterHousehold for impersonatedUser.
    CompleterHousehold completerHousehold = dataBean.fetch(impersonatedUser, loggedInUser);

    // Delete loggedInUser from CompleteHousehold.viewers
    boolean result = completerHousehold.deleteViewer(loggedInUser);

    // If the delete returns true, there are no more viewers for this household, so delete the CompleterHousehold from DataBean.
    if (result)
        dataBean.delete(impersonatedUser);
}
4

0 回答 0