2013-04-30 2 views
2

Я хочу, чтобы мое приложение отображало страницу пользовательской ошибки при вызове исключения. Ответ, содержащий страницу, должен иметь правильный статус HTTP и содержать сообщение об исключении и, возможно, другие данные из объекта исключения.Пользовательская, динамическая страница с ошибкой Spring Framework

я уже пробовал 2 подхода и ни один из них работает:

1) Возвращение ModelAndView из AbstractHandlerExceptionResolver подкласса - я могу генерировать любые ошибки страницы я хочу, но он получает подается со статусом 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> 

и настроить страницу 404 ошибки в web.xml (пружинный диспетчерскую сервлет возвращает st АТУС код 404, если нет отображения не было найдено)

в вашем JSP вы можете получить доступ исключения кидает следующий

${exception} 
Смежные вопросы