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 閱讀(427) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 迁安市| 永嘉县| 双城市| 湟源县| 信宜市| 阿尔山市| 青田县| 元江| 什邡市| 嘉黎县| 新宁县| 巴彦淖尔市| 甘德县| 靖江市| 贞丰县| 保德县| 长汀县| 固原市| 木里| 乾安县| 罗平县| 江川县| 青海省| 漳平市| 宜黄县| 庐江县| 屯门区| 偃师市| 芮城县| 广河县| 秭归县| 扎鲁特旗| 四子王旗| 伊春市| 区。| 临高县| 大同市| 元阳县| 高唐县| 沙湾县| 漠河县|