マネージド Bean とフックの両方が同じ war にあります。Tomcat 7 で 6.1 CE を使用しています。
logout.events.pre に関連付けられたフックの実行メソッド中に、ApplicationScoped Bean から一部のデータを削除しようとしています。
run メソッドは HttpServletRequest で呼び出され、その HttpServletRequest の属性として、または HttpServletRequest から取得できる ServletContext の属性として Bean にアクセスできる必要があることを読みましたが、両方のメソッドが 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);
}