2013-11-15 2 views
0

У меня есть приложение Roo со стандартной настройкой mvc.Настройка статуса ответа для обработчика неперехваченных исключений в Roo

Если я создаю исключение из своего контроллера, я получаю красиво отображаемую трассировку стека и код состояния 200 на стороне клиента.

я обнаружил, что он обрабатывается странице ошибки определено в web.xml как:

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

uncaughtException.jspx является:

<div xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" xmlns:spring="http://www.springframework.org/tags" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> 
    <jsp:directive.page contentType="text/html;charset=UTF-8" /> 
    <jsp:output omit-xml-declaration="yes" /> 
    <spring:message var="title" code="error_uncaughtexception_title" htmlEscape="false" /> 
    <util:panel id="title" title="${title}"> 
    <h2>${fn:escapeXml(title)}</h2> 
    <p> 
     <spring:message code="error_uncaughtexception_problemdescription" /> 
    </p> 
    <c:if test="${not empty exception}"> 
     <p> 
     <h4> 
      <spring:message code="exception_details" /> 
     </h4> 
     <spring:message var="message" code="exception_message" htmlEscape="false" /> 
     <util:panel id="_message" title="${message}" openPane="false"> 
      <c:out value="${exception.localizedMessage}" /> 
     </util:panel> 
     <spring:message var="stacktrace" code="exception_stacktrace" htmlEscape="false" /> 
     <util:panel id="_exception" title="${stacktrace}" openPane="false"> 
      <c:forEach items="${exception.stackTrace}" var="trace"> 
      <c:out value="${trace}" /> 
      <br /> 
      </c:forEach> 
     </util:panel> 
     </p> 
    </c:if> 
    </util:panel> 
</div> 

Как изменить код Быстродействие на что-то другое, чем 200?

Возможно ли это как-то установить его в uncaughtException.jspx?

ответ

0

Решает эту проблему, установив defaultStatusCode на org.springframework.web.servlet.handler.SimpleMappingExceptionResolver в webmvc-config.xml.

Пример:

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver" p:defaultErrorView="uncaughtException"> 
    <property name="exceptionMappings"> 
     <props> 
      <prop key=".DataAccessException">dataAccessFailure</prop> 
      <prop key=".NoSuchRequestHandlingMethodException">resourceNotFound</prop> 
      <prop key=".TypeMismatchException">resourceNotFound</prop> 
      <prop key=".MissingServletRequestParameterException">resourceNotFound</prop> 
     </props> 
    </property> 
    <property name="defaultStatusCode"> 
     <value>500</value> 
    </property> 
</bean> 
+0

Любые подсказки для этой ошибки? 'Префикс" p "для атрибута" p: defaultErrorView ", связанный с типом элемента" beans: bean "не связан.' – zygimantus