画面にあるドロップダウンをログインユーザ毎に制御したいといわれた。
セッションにログインユーザ情報は持っているのでそれで何とかしろと。
BackingBeanで生成する分にはなにも問題ない。
でもそのドロップダウンはAjaxで動的にも変化する。
どう頑張ってもAjaxでセッション情報は取れない(別セッションだから当たり前)ので「無理です」と言ってみたけど、100以上もの画面はいまさら直せないとかなんとか。
どうやらdwrでCookieは取得できるようなので、どんな手段を用いても良いという許可を得て実装してみた。
BackingBean側で事前にCookieに情報をセット
Cookie cookie = new Cookie("NAME", "value"); ExternalContext econtext = FacesContext.getCurrentInstance().getExternalContext(); HttpServletResponse hresponse = (HttpServletResponse)econtext.getResponse(); hresponse.addCookie(cookie);
HttpServletRequest hsrequest = WebContextFactory.get().getHttpServletRequest(); Cookie[] cookies = hsrequest.getCookies(); String value; for (Cookie cookie : cookies) { if ("NAME".equals(cookie.getName())) { value = cookie.getValue(); break; } }