Redirect 在Struts2中,当重定向到另一个操作时,命名变量未被清除

Redirect 在Struts2中,当重定向到另一个操作时,命名变量未被清除,redirect,struts2,named-parameters,valuestack,Redirect,Struts2,Named Parameters,Valuestack,当从另一个操作重定向到一个操作时,我遇到了一个奇怪的问题。简而言之,在第一个操作(我正在重定向)中捕获的命名变量仍然以某种方式保留在值堆栈中,并且在第二个操作中覆盖了相同的命名变量。我将通过一些代码进行解释 ... s/${seoURLForRedirect} /报告 ... 在返回之前,我正在ReportsAction中设置变量${seoURLForRedirect}。 对于第二个操作,我有以下映射 ... 如您所见,我在第二个操作中使用了相同的命名变量seoURL。此值设置为第一个操

当从另一个操作重定向到一个操作时,我遇到了一个奇怪的问题。简而言之,在第一个操作(我正在重定向)中捕获的命名变量仍然以某种方式保留在值堆栈中,并且在第二个操作中覆盖了相同的命名变量。我将通过一些代码进行解释


...
s/${seoURLForRedirect}
/报告
...
在返回之前,我正在
ReportsAction
中设置变量
${seoURLForRedirect}
。 对于第二个操作,我有以下映射


...
如您所见,我在第二个操作中使用了相同的命名变量
seoURL
。此值设置为第一个操作中的值。我无法理解为什么值堆栈仍然保持第一个操作中设置的
seoURL
值。特别是因为我在重定向结果参数中写得太多了


感谢您的帮助。

基于您的
操作属性,我假设您正在使用Spring插件

操作必须声明为
scope=“prototype”
/非单例,以便每个请求实例化

如果它们不是,则您使用的是单例,并且属性将跨请求进行维护


我从未尝试将
重定向操作
操作名
设置为指向另一个通配符操作的通配符,因此我不确定问题的第二部分。

谢谢Dave。我想这就是我看到的行为的原因。我想我将不得不使用其他变量。这将是冗余代码。“哦,好吧!”尚茨不明白你的意思;原型/单例部分不应影响任何重要内容。关于重定向操作,我不是说它不起作用,我只是说我从未尝试过。它影响seoURL变量。这在第一个和第二个动作中都存在。当我立即从第一个动作重定向到第二个动作时,它似乎覆盖了这个变量。Re:redirectAction,我将我的方法改为使用“重定向”。所以现在我很好。@Chantz。。。Struts 2设计为每个请求使用一个实例;这不应该是令人惊讶的行为。如果设置为通配符或参数,则将在操作中设置。