teeda..

  • [teeda]filterからエラー画面

Filterでセッションチェックとかやるんだけど、
DB接続とか絶対エラーはあるもの。
だけどfilterはTeedaのライフサイクル管理外なんで、
普通に error.html には遷移しない。
無理やりエラー画面に飛ばしてみた。

            final LifecycleFactory lifecycleFactory = (LifecycleFactory) WebAppUtil
                .getFactory(FactoryFinder.LIFECYCLE_FACTORY);
            final Lifecycle lifecycle = lifecycleFactory
                    .getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE);

            final FacesContextFactory facesContextFactory = (FacesContextFactory) WebAppUtil
                .getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);
            final FacesContext context = facesContextFactory.getFacesContext(
                    config.getServletContext(), request, response, lifecycle);

            Map redirectScope = RedirectScope.getOrCreateContext(context);
            redirectScope.put(JsfConstants.ERROR_MANAGER_EXCEPTION_KEY, exception);

            String contextPath = context.getExternalContext().getRequestContextPath();
            String url = contextPath + this._errorUrl;
            // エラー画面へ遷移
            NavigationHandlerUtil.redirect(context, url);