0

私のアプリケーションでは、例外が発生するたびにエラー ページに移動したいと考えています。はRuntimeException処理およびチェックされ、再度スローされます。そのために、Faces 構成でグローバル ナビゲーション ルールを定義しました。

<navigation-rule>
    <from-view-id>*</from-view-id>
    <navigation-case>
        <from-outcome>error</from-outcome>
        <to-view-id>/error.xhtml</to-view-id>
    </navigation-case>
</navigation-rule>

そして私のcatchブロックでは、次のようにナビゲートしようとしています:

FacesContext fctx = FacesContext.getCurrentInstance();
Application application = fctx.getApplication();
NavigationHandler navHandler = application.getNavigationHandler();
navHandler.handleNavigation(fctx,null, "error"); 

しかし、それは機能していません。Exception強制的にスローしていますが、目的のエラー ページに移動していません。

どんなポインタでも私にとって非常に役に立ちます。

4

1 に答える 1

1

errorを使用してページをリダイレクトすることをお勧めしますExternalContextExceptionで構成する必要がありますweb.xml

FacesContext context = FacesContext.getCurrentInstance();
ExternalContext extContext = context.getExternalContext();
String url = extContext.encodeActionURL(extContext.getRequestContextPath() + "/error");
extContext.redirect(url);

web.xml

<error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/error</location>
</error-page>

を使用すると、 に基づいてページJboss-Seamを簡単にリダイレクトできます。error/warnningexception

pages.xml

<exception class="org.jboss.seam.security.NotLoggedInException">
    <redirect view-id="/login.xhtml">
        <message severity="warn">#{messages['org.jboss.seam.NotLoggedIn']}</message>
    </redirect>
</exception>

<exception>
    <redirect view-id="/error.xhtml">
        <message severity="error">Unexpected error, please try again</message>
    </redirect>
</exception>
于 2012-11-24T14:42:56.993 に答える