soufan

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            22 隨筆 :: 0 文章 :: 0 評論 :: 0 Trackbacks

          (轉) Filter和Servlet中如何訪問FacesContext?

          ?

          在?Faces realm外,例如 在 ?filter 或者servlet中,當 FacesContent.getCurrentInstance() 返回null時候,你可以使用FacesContextFactory來得到FacesContext,下面是一個示例.


          //?You?need?an?inner?class?to?be?able?to?call?FacesContext.setCurrentInstance
          //?since?it's?a?protected?method
          private?abstract?static?class?InnerFacesContext?extends?FacesContext
          {
          ??protected?static?void?setFacesContextAsCurrentInstance(FacesContext?facesContext)?{
          ????FacesContext.setCurrentInstance(facesContext);
          ??}
          }

          private?FacesContext?getFacesContext(ServletRequest?request,?ServletResponse?response)?{
          ??//?Try?to?get?it?first
          ??FacesContext?facesContext?=?FacesContext.getCurrentInstance();
          ??if?(facesContext?!=?null)?return?facesContext;

          ??FacesContextFactory?contextFactory?=?(FacesContextFactory)FactoryFinder.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);
          ??LifecycleFactory?lifecycleFactory?=?(LifecycleFactory)FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
          ??Lifecycle?lifecycle?=?lifecycleFactory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE);

          ??//?Either?set?a?private?member?servletContext?=?filterConfig.getServletContext();
          ??//?in?you?filter?init()?method?or?set?it?here?like?this:
          ??//?ServletContext?servletContext?=?((HttpServletRequest)request).getSession().getServletContext();
          ??//?Note?that?the?above?line?would?fail?if?you?are?using?any?other?protocol?than?http

          ??//?Doesn't?set?this?instance?as?the?current?instance?of?FacesContext.getCurrentInstance
          ??facesContext?=?contextFactory.getFacesContext(servletContext,?request,?response,?lifecycle);

          ??//?Set?using?our?inner?class
          ??InnerFacesContext.setFacesContextAsCurrentInstance(facesContext);

          ??//?set?a?new?viewRoot,?otherwise?context.getViewRoot?returns?null
          ??UIViewRoot?view?=?facesContext.getApplication().getViewHandler().createView(facesContext,?"yourOwnID");
          facesContext.setViewRoot(view);

          ??return?facesContext;
          }
          posted on 2006-12-19 15:52 soufan 閱讀(428) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 象州县| 天津市| 藁城市| 舞阳县| 漯河市| 盐山县| 南充市| 晋城| 桓台县| 南江县| 子洲县| 西乌| 新疆| 乐清市| 婺源县| 高密市| 灌云县| 塔河县| 龙江县| 抚宁县| 安龙县| 威远县| 漳州市| 河西区| 汕尾市| 钟祥市| 科技| 惠来县| 称多县| 平武县| 中超| 武宁县| 罗定市| 赞皇县| 恩平市| 三都| 苏尼特右旗| 新疆| 阳朔县| 筠连县| 岳阳市|