6

我正在将一个 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:forwardforwards to a.do,它不起作用。

我听从了 Roman 的建议,使用result而不是 forward。那么现在的问题是如何配置整个应用的默认动作呢?

我试过<default-action-ref name="a"/>了,但它只适用于未映射的操作,例如http://localhost:8080/shell2/(some-unmapped-action).do,它转到默认操作。但如果我不指定".do".

当然这可以通过 url-rewrite 来完成,但我不想使用这种方法。

4

2 回答 2

4

包含struts标签库

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

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

<s:action name="YourAction" namespace="/PackageNamespace" executeResult="true" />
于 2013-12-03T07:35:42.923 回答
1

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

于 2013-04-17T09:26:07.683 回答