我正在将一个 Struts 应用程序迁移到 Struts 2。它是四年前由 Struts 1.2 开发的。
我的问题是:
在我的JSP中,有这么一句话:
<jsp:forward page="/a.do"/>
它在 Struts 1 中运行良好,但在 Struts 2 中不起作用,当我访问此 JSP 文件时,它告诉我 HTTP 404 错误。
但是,如果我访问
http://localhost:8080/shell/a.do
,效果很好。
我想知道原因,是不是因为Struts 2过滤器无法捕获前向动作(
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
)?
那么,转发可以分派到Struts 2操作吗?
我的应用程序中有很多转发,如果转发在 Struts 2 中无法工作,是否是使用重定向而不是转发的唯一解决方案?
其实这个问题是基于我的分析,原来的工作是显示网站的欢迎页面。如果我使用
jsp:forward
转发到 a.do
,则不起作用。
我听从了 Roman 的建议,使用
result
而不是前进。那么现在的问题是如何配置整个应用程序的默认操作?
我尝试了
<default-action-ref name="a"/>
,但它仅适用于未映射的操作,例如http://localhost:8080/shell2/(some-unmapped-action).do
,它会转到默认操作。但如果我不指定 ".do"
,它就不起作用。
当然可以通过url-rewrite来完成,但我不想使用这种方法。
包含struts标签库
<%@ taglib prefix="s" uri="/struts-tags" %>
你可以简单地在你的jsp页面中编写一些动作
<s:action name="YourAction" namespace="/PackageNamespace" executeResult="true" />