当前位置 : 主页 > 编程语言 > java >

jsp – JSF 1.x通用异常处理

来源:互联网 收集:自由互联 发布时间:2021-06-25
如果我的业务层有异常(例如我的JDBC连接bean中的SQL异常),那么我如何用自定义消息将其传播到全局error.jsp页面? JSF 1.x不提供这种类型的任何隐式错误处理,尽管您可以使用导航规则
如果我的业务层有异常(例如我的JDBC连接bean中的SQL异常),那么我如何用自定义消息将其传播到全局error.jsp页面? JSF 1.x不提供这种类型的任何隐式错误处理,尽管您可以使用导航规则(假设表单发布)重定向到错误页面…

<navigation-case>
<description>
Handle a generic error outcome that might be returned
by any application Action.
</description>
<display-name>Generic Error Outcome</display-name>
<from-outcome>loginRequired</from-outcome>
<to-view-id>/must-login-first.jsp</to-view-id>
</navigation-case>

…或使用重定向…

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

我建议您查看JSF specification了解更多详情。

您可以根据需要将错误消息放置在请求范围/会话范围/ url参数上。

假设一个Servlet容器,可以使用通常的web.xml error page configuration。

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

在你的支持bean中,你可以在RuntimeException中打包并抛出你的异常。

一些JSF实现/框架将捕获这些错误(Apache MyFaces / Facelets),所以你必须要configure them not to。

网友评论