如何在Struts 2中捕获默认拦截器堆栈抛出的异常?
没有为动作名称index
映射的操作。如何捕捉异常,因为我想定义我的处理。如何在Struts 2中捕获默认拦截器堆栈抛出的异常?
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:189)
org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:475)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter.doFilter(StrutsPrepareFilter.java:82)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
com.zhanxiao.sys.PermissionFilter.doFilter(PermissionFilter.java:61)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
org.apache.coyote.http11.AbstractHttp11Processor.proces
由于与请求一起使用的URL未正确映射到操作配置,因此引发了异常。为了摆脱异常,您应该正确地将URL映射到操作,或者使用缺省操作引用,如果没有找到给定URL的操作,将会调用默认操作引用。
即使使用正则表达式模式匹配器,您也可以使用通配符映射来映射一堆URL,这会找到您的动作,或者它无法通过提供您的自定义实现来覆盖动作映射器的默认行为。
要处理您的动作代码的异常,您可以在动作堆栈中使用exception
interceptor。它将帮助您通过全局异常映射处理哪种异常,并定义实际处理异常的全局结果。请参阅详细说明以及示例如何使用异常处理来制作默认包的链接。
有一个选项可以扩展拦截器并覆盖异常处理机制,如文档中所述。
感谢您的回答。 – Chd 2013-04-26 02:29:20
你应该接受这个答案 – 2017-11-03 12:36:15
请更具体一点。 – NilsH 2013-04-25 11:47:46
@NilsH我认为OP具有特定的标题,并且更具体地发布了堆栈跟踪。 – 2013-04-25 12:22:10
那么,很高兴知道有人得到它然后:) – NilsH 2013-04-25 12:23:58