2010-05-25 6 views
1
<bean 
    class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> 
    <property name="mappedHandlers"> 
     <set> 
      <ref bean="exceptionController" /> 
     </set> 
    </property> 
    <property name="defaultErrorView" value="tiles/content/error" /> 
</bean> 

리디렉션을 만들 수 있도록 컨트롤러에 예외를 보내려고합니다. mappedHandlers 부분을 주석 처리하면 오류 타일이 표시되지만 타일 일뿐입니다. 나머지 타일은 정상적으로로드됩니다. 내가 오류 타일뿐만 아니라 오류 페이지를 표시 할 수 있도록 컨트롤러에서 리디렉션을해야합니다.exceptionController에 예외를 보내는 방법은 무엇입니까?

예외 정보가 exceptionController에서 어떤 메소드를 호출하는지에 대한 충분한 정보 또는 예제를 찾을 수 없습니다.

답변

5

mappedHandlers 속성에 대한 오해가 있습니다. 이것은이 예외 처리기 Bean이 컨트롤러가 해당 등록 정보에 나열된 예외 에 대해서만 적용해야한다는 것입니다. 이 아님 컨트롤러에 을 보내고 컨트롤러에 예외를 보내십시오. 간단한 리디렉션을 보내려면

는, 당신은 다음과 같이 somrthing을 수행 할 수 있습니다

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> 
    <property name="defaultErrorView" value="redirect:/myErrorPage" /> 
</bean> 

당신은하지만, 이렇게하여 예외에 대한 모든 정보를 잃게됩니다.

예외를 처리하기 위해 사용자 지정 코드를 작성하려면 HandlerExceptionResolver (아마도 AbstractHandlerExceptionResolver의 하위 클래스)의 사용자 지정 구현을 작성하고 SimpleMappingExceptionResolver 대신이를 사용하는 것이 좋습니다.

또 다른 대안은 @ExceptionHandler 주석 스타일을 사용하는 것입니다 (문서 here 참조).

관련 문제