gpt4 book ai didi

java - 以编程方式导航到 JSF 2.0 中的错误页面

转载 作者:行者123 更新时间:2023-12-01 15:01:48 24 4
gpt4 key购买 nike

在我的应用程序中,每当发生异常时,我愿意导航到错误页面。 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 block 中,我尝试导航为:

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

但是它不起作用。我强制抛出Exception,但它没有导航到所需的错误页面。

任何指针都会对我非常有帮助。

最佳答案

我建议使用ExternalContext重定向错误页面。您必须在 web.xml

中配置您的 Exception
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,很容易根据异常重定向错误/警告页面。

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>

关于java - 以编程方式导航到 JSF 2.0 中的错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13541974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com