托管 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);
}