2013-04-30 2 views
2

예외가 발생하면 내 응용 프로그램에 사용자 정의 오류 페이지를 표시하고 싶습니다. 페이지를 포함하는 응답은 올바른 HTTP 상태를 가져야하며 예외 메시지와 예외 객체의 다른 데이터를 포함해야합니다.스프링 프레임 워크를 사용한 사용자 정의 동적 오류 페이지

는 이미이 방법을 시도하고 그들 중 어느 것도 작동 :

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 오류 페이지를 구성 할 수 있습니다 st를 반환합니다. ExceptionHandler는 당 컨트롤러 기준으로 만 작동 오류 페이지 것은 저를 허용하지 않습니다 @

${exception}