2011-03-08 3 views
1

원하는 방식으로 작업을 얻을 수없고, 나는 예외 매핑이 방법으로 추가하려고 :나는 아마도 SimpleMappingExceptionResolver가 나는 봄 3 사용하고

코스 JSP (들)의
<bean 
     class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> 
     <property name="exceptionMappings"> 
      <map> 
       <entry key="it.jsoftware.jacciseweb.controllers.AcciseAuthException" value="/jsp/errorUserPage.jsp" />    
      </map> 
     </property>  
    </bean> 

은 WEB-INF에 만에되지 않습니다 루트의 폴더는 jsp입니다. 내가 얻는 것은 web.xml에서 설정 한 404 처리를위한 사용자 정의 페이지입니다. 뭐가 문제 야?

[08 mar 2011 15:20:11,451 CET] [DEBUG] [HandlerMethodInvoker] [invokeHandlerMethod:173] - Invoking request handler method: public org.springframework.web.servlet.ModelAndView it.jsoftware.jacciseweb.controllers.MainController.prodottiList(int,java.lang.String,boolean,java.lang.Integer,javax.servlet.http.HttpSession) throws java.lang.Exception 
[08 mar 2011 15:20:11,452 CET] [DEBUG] [SimpleMappingExceptionResolver] [resolveException:132] - Resolving exception from handler [[email protected]]: it.jsoftware.jacciseweb.controllers.AcciseAuthException 
[08 mar 2011 15:20:11,454 CET] [DEBUG] [SimpleMappingExceptionResolver] [findMatchingViewName:202] - Resolving to view '/jsp/errorUserPage.jsp' for exception of type [it.jsoftware.jacciseweb.controllers.AcciseAuthException], based on exception mapping [it.jsoftware.jacciseweb.controllers.AcciseAuthException] 
[08 mar 2011 15:20:11,454 CET] [DEBUG] [SimpleMappingExceptionResolver] [getModelAndView:294] - Exposing Exception as model attribute 'exception' 
[08 mar 2011 15:20:11,458 CET] [DEBUG] [DispatcherServlet] [processHandlerException:1001] - Handler execution resulted in exception - forwarding to resolved error view: ModelAndView: reference to view with name '/jsp/errorUserPage.jsp'; model is {exception=it.jsoftware.jacciseweb.controllers.AcciseAuthException} 
it.jsoftware.jacciseweb.controllers.AcciseAuthException 
    at it.jsoftware.jacciseweb.controllers.ApplicationUserStatus.checkIfUserPrivilegeBelowOrEqual(ApplicationUserStatus.java:162) 
    at it.jsoftware.jacciseweb.controllers.MainController.prodottiList(MainController.java:401) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) 
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426) 
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) 
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
    at java.lang.Thread.run(Thread.java:619) 
[08 mar 2011 15:20:11,464 CET] [DEBUG] [DefaultListableBeanFactory] [invokeInitMethods:1461] - Invoking afterPropertiesSet() on bean with name '/jsp/errorUserPage.jsp' 
[08 mar 2011 15:20:11,465 CET] [DEBUG] [DefaultListableBeanFactory] [doGetBean:242] - Returning cached instance of singleton bean 'org.springframework.transaction.config.internalTransactionAdvisor' 
[08 mar 2011 15:20:11,465 CET] [DEBUG] [DispatcherServlet] [render:1045] - Rendering view [org.springframework.web.servlet.view.JstlView: name '/jsp/errorUserPage.jsp'; URL [/jsp/errorUserPage.jsp]] in DispatcherServlet with name 'springDispatcher' 
[08 mar 2011 15:20:11,466 CET] [DEBUG] [JstlView] [exposeModelAsRequestAttributes:328] - Added model object 'exception' of type [it.jsoftware.jacciseweb.controllers.AcciseAuthException] to request in view with name '/jsp/errorUserPage.jsp' 
[08 mar 2011 15:20:11,466 CET] [DEBUG] [JstlView] [renderMergedOutputModel:236] - Forwarding to resource [/jsp/errorUserPage.jsp] in InternalResourceView '/jsp/errorUserPage.jsp' 
[08 mar 2011 15:20:11,467 CET] [DEBUG] [OpenSessionInViewInterceptor] [afterCompletion:212] - Closing single Hibernate Session in OpenSessionInViewInterceptor 
[08 mar 2011 15:20:11,468 CET] [DEBUG] [SessionFactoryUtils] [closeSession:789] - Closing Hibernate Session 
[08 mar 2011 15:20:11,468 CET] [DEBUG] [DispatcherServlet] [processRequest:674] - Successfully completed request 

UPDATE

내가 나중에이 질문을 볼 수있는 사람이 추가 해요 :

여기에 사용할 수 DEBUG 봄 로그입니다. 이 구성은 괜찮습니다. JSP가 잘못되었습니다. 어쨌든이 문제를 해결할 더 좋은 방법을 제안하는 대답에 대해 봄 3입니다.

답변

3

예외 값에 .jsp를 갖고 싶습니까? 컨트롤러와 뷰 리졸버 (resolver) 등은 어떻게 설정되어 있습니까? 경로 등을 해결하기 전에 .jsp를 값에 추가합니까?

xml에 예외 매핑이 필요합니까? @ExceptionHandler 주석은 기대치를 충분히 채울 수 있습니까? 당신이 주석 방법이 동일한 컨트롤러 클래스 내에서 할 필요가있는 주석의 길을 갈 경우 http://developingdeveloper.wordpress.com/2008/03/09/handling-exceptions-in-spring-mvc-part-2/

이 주를 수행합니다 (또는 추상 : 여기

좋은 (스프링 2.5 기반 있지만) XML 기반의 스프링 예외 리졸버의 예입니다 수업). 나는 이것의 작은 예를 썼습니다 : http://blog.flurdy.com/2010/07/spring-mvc-exceptionhandler-needs-to-be.html

+0

대단히 감사합니다. 주석을 사용하여 예외를 처리 할 수 ​​있다는 것을 알지 못했습니다 ... 아마도 Spring 문서를 더 신중하게 읽어야합니다. 어쨌든, 그냥 제 느낌입니까, 아니면 Spring 3 문서가 빨습니까? 나는 그들이 많은 세부 사항이나 예제를주지 않는다는 것을 의미한다. 나는 왜 어떤 것들이 효과가 없는지 이해하기 위해 몇 시간 동안 구글을 사용해야한다. ... – gotch4

+0

그리고, 아주 좋은 기사. – gotch4

+0

예 그들의 문서는 몇 가지 세부 사항을 생략합니다. API는 워드 프로세서, 그리고 그들의 샘플 애플 리케이션은 일부 격차를 채우지 만, 구글과 스택 오버 플로우는 필요한 도구입니다 :) – flurdy