删除转发到 Struts 2 中操作的 <jsp:forward> 标签

问题描述 投票:0回答:2

我正在将一个 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来完成,但我不想使用这种方法。

java jsp http-redirect struts2 forward
2个回答
4
投票

包含struts标签库

<%@ taglib prefix="s" uri="/struts-tags" %>

你可以简单地在你的jsp页面中编写一些动作

<s:action name="YourAction" namespace="/PackageNamespace" executeResult="true" />

1
投票

forward
的概念从 Struts 1 转移到调度程序结果 的概念。您必须从应用程序中删除所有
forward
并创建
result

© www.soinside.com 2019 - 2024. All rights reserved.