【问题标题】:How to catch the exception thrown by default interceptor's stack in Struts 2? [closed]如何在 Struts 2 中捕获默认拦截器堆栈抛出的异常? [关闭]
【发布时间】:2023-03-06 06:21:01
【问题描述】:

Struts 2中如何捕捉默认拦截器堆栈抛出的异常?

异常消息:

There is no action mapped for action name `index`. 

如何捕捉异常,因为我想定义我的处理方式?

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

【问题讨论】:

  • 请具体一点。
  • @NilsH 我认为 OP 在标题中有具体说明,更具体地说,发布了一个堆栈跟踪。
  • 好吧,很高兴知道有人得到它:)
  • @NilsH 异常处理在 Struts2 中很重要,如果您不同意,请查看答案。
  • 我对任何事情都没有异议,@RomanC。我只是说我不清楚实际的问题。

标签: java exception struts2 action-mapping


【解决方案1】:

抛出异常是因为请求使用的 URL 未正确映射到操作配置。要消除异常,您应该正确地将 URL 映射到操作或使用默认操作引用,如果没有找到给定 URL 的操作,则会调用该引用。

您也可以使用通配符映射来映射一堆 URL,即使使用正则表达式模式匹配器会找到您的操作,或者如果它无助于通过提供您的自定义实现来覆盖操作映射器的默认行为。

要处理来自您的操作代码和拦截器堆栈的异常,您可以在您的操作堆栈上使用exception interceptor。它将帮助您通过全局异常映射来处理您想要处理的异常类型,并定义实际处理异常的全局结果。请参阅详细说明如何使用异常处理制作默认包的示例的链接。

有一个选项可以扩展拦截器并覆盖文档中也描述的异常处理机制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多