error-handling - 在Struts 2中找不到 Action 时如何处理404错误

标签 error-handling configuration struts2 http-status-code-404 action-mapping

在Struts2中,如果找不到 Action ,我想重定向到404.jsp页面
我在web.xml文件中添加了错误代码,如下所示。

<error-page>
    <error-code>403</error-code>
    <location>/403.jsp</location>
</error-page>
<error-page>
    <error-code>404</error-code>
    <location>/404.jsp</location>
</error-page>

它呈现了404.jsp页面的内容,但是在下面的日志中出现错误。
如何清除以下错误
2014-04-07 14:07:46,706  WARN (org.apache.struts2.dispatcher.Dispatcher:64) - Could not find action or result: /struts2-test/home11
There is no Action mapped for namespace [/] and action name [home11] associated with context path [/struts2-test]. - [unknown location]
    at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)
    at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
    at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:37)
    at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:552)
    at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

最佳答案

如果将应用程序配置为在struts.devMode中运行,则在渲染JSP页面时,如果在运行时配置中未发现任何 Action ,则Struts 2框架会产生警告。它可以帮助开发人员解决Struts标记中不适当的 Action 映射。但是, Action 映射并非总是静态地推断,而是在运行时推断。因此,标签应该能够从值堆栈中的属性中查找映射。但是struts标记仅在操作上下文中执行,当您从错误页面重定向时,该上下文将不可用。确保您具有重定向到Struts操作时正确的URL。

关于error-handling - 在Struts 2中找不到 Action 时如何处理404错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22880028/

相关文章:

python - 递归函数在具有错误处理的Python中要求用户输入

sql - 无法连接到SQL

hadoop - 如何在hadoop配置中选择目录列表?

C# 一个项目可以有多个 .config 文件吗?

java - 为什么操作映射 "*_*"的工作方式与 "*"一样?

objective-c - AirPrint 连接被拒绝错误

c# - 使用Soap Headers处理错误

configuration - 将 Google Analytics 报告配置为默认为页面标题而不是页面 URL

java - 选择标记未在 Jsp 上呈现

java - Struts2 Ognl 标签中的日期比较