【发布时间】:2023-04-10 08:04:01
【问题描述】:
我正在将一个 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)
所以无法将 forward 分派给 Struts 2 动作?
我的应用程序中有很多转发,如果转发在 Struts 2 中无法工作,它是否是使用重定向而不是转发的唯一解决方案?
其实这个问题是基于我的分析,原来的工作是显示网站的欢迎页面。如果我使用jsp:forward 转发到a.do,它不起作用。
我听从了 Roman 的建议,使用 result 而不是 forward。那么现在的问题是如何配置整个应用的默认动作呢?
我试过<default-action-ref name="a"/>,但它只适用于未映射的操作,例如http://localhost:8080/shell2/(some-unmapped-action).do,它会转到默认操作。但如果我不指定".do",它就不起作用。
当然这可以通过url-rewrite来完成,但是我不想用这种方式。
【问题讨论】:
-
大家好,我认为这个问题可以关闭,因为只有在我的web.xml中为struts2过滤器添加
<dispatcher>REQUEST</dispatcher><dispatcher>INCLUDE</dispatcher><dispatcher>FORWARD</dispatcher>,这个问题才能得到解决。仅供参考。
标签: java jsp redirect struts2 forward