我正在将一个 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
forwards to a.do
,它不起作用。
我听从了 Roman 的建议,使用result
而不是 forward。那么现在的问题是如何配置整个应用的默认动作呢?
我试过<default-action-ref name="a"/>
了,但它只适用于未映射的操作,例如http://localhost:8080/shell2/(some-unmapped-action).do
,它转到默认操作。但如果我不指定".do"
.
当然这可以通过 url-rewrite 来完成,但我不想使用这种方法。