2013-04-30 55 views
2

我希望我的應用程序在拋出異常時顯示自定義錯誤頁面。包含該頁面的響應應該具有正確的HTTP狀態幷包含異常消息以及可能來自異常對象的其他數據。用Spring框架定製動態錯誤頁面

我已經嘗試過2點的方法和他們都不工作:

1)從AbstractHandlerExceptionResolver子類返回一個ModelAndView - 我可以生成任何錯誤頁面,我想,但它得到了200個OK HTTP狀態服務。

2)在web.xml中指定一個錯誤頁面 - 我找不到一個訪問異常的方法。

好的,解決了。事實證明,這很容易。我用HttpServletResponse.setStatus。請注意,使用sendError無法正常工作。

回答

3

你可以配置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錯誤頁面(春季調度的servlet返回st的ATU代碼404,如果沒有映射已找到)

在你的JSP您可以訪問異常拋出如下

${exception}