【问题标题】:Custom, dynamic error page with Spring framework使用 Spring 框架的自定义动态错误页面
【发布时间】:2013-04-24 05:34:23
【问题描述】:

我希望我的应用在抛出异常时显示自定义错误页面。包含页面的响应应具有正确的 HTTP 状态,并包含异常消息以及可能来自异常对象的其他数据。

我已经尝试了两种方法,但它们都不起作用:

1) 从 AbstractHandlerExceptionResolver 子类返回 ModelAndView - 我可以生成任何我想要的错误页面,但它会以 200 OK HTTP 状态提供服务。

2) 在 web.xml 中指定错误页面 - 我找不到访问异常的方法。

好的,解决了。事实证明这很容易。我用HttpServletResponse.setStatus。请注意,使用 sendError 无法正常工作。

【问题讨论】:

    标签: spring exception error-handling custom-error-pages


    【解决方案1】:

    【讨论】:

    • @ExceptionHandler 仅在每个控制器的基础上工作,并且错误页面的事情不会让我弄乱 Exception
    【解决方案2】:

    你可以配置SimpleMappingExceptionResolver

    <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
            <property name="defaultStatusCode" value="500" />
            <property name="defaultErrorView" value="error/500" />
            <property name="exceptionMappings">
                <props>
                    <prop key="java.lang.Exception">error/500</prop>
                    <prop key="SomeOtherException">error/custom</prop>
                </props>
            </property>
            <property name="statusCodes">
                <props>
                    <prop key="error/500">500</prop>
                    <prop key="error/custom">404</prop>
                </props>
            </property>
            <property name="order" value="0" />
        </bean>
    

    并在 web.xml 中配置你的 404 错误页面(如果没有找到映射,spring dispatcher servlet 返回状态码 404)

    在您的 jsp 中,您可以按如下方式访问异常抛出

    ${exception}
    

    【讨论】:

      猜你喜欢
      • 2019-02-22
      • 1970-01-01
      • 2014-11-30
      • 2018-02-11
      • 1970-01-01
      • 2016-01-17
      • 2019-03-24
      • 1970-01-01
      • 2017-08-07
      相关资源
      最近更新 更多