当从另一个动作重定向到某个动作时,我遇到了一个奇怪的问题。简而言之,在第一个动作中捕获的命名变量(我从中重定向)仍然以某种方式保留在值栈中,并且它在第二个动作中覆盖相同的命名变量。我将通过一些代码解释。
<action name="r/{seoURL}" class="ReportsAction"
method="displayReport">
...
<result name="REDIRECT_TO_NEXT_ACTION" type="redirectAction">
<param name="actionName">s/${seoURLForRedirect}</param>
<param name="namespace">/reports</param>
</result>
...
</action>
我在返回前在${seoURLForRedirect}
设置变量ReportsAction
。
我有第二个动作的以下映射。
<action name="s/{seoURL}" class="ReportSeriesAction"
method="displayReportSeries">
...
</action>
正如您所看到的,我在第二个动作seoURL
中有相同的命名变量。此值设置为第一个操作中找到的值。我无法理解为什么值堆栈仍然在第一个操作中设置了seoURL
值。特别是因为我在我的重定向结果参数中写了它。
任何帮助表示感谢。
答案 0 :(得分:2)
根据您的class
操作属性,我假设您正在使用Spring插件。
必须将操作声明为scope="prototype"
/非单例,才能按请求进行实例化。
如果他们不是,那么您正在使用单身人士,并且会在请求中维护属性。
我从未尝试将redirectAction
的{{1}}设置为指向另一个通配符操作的通配符,因此我不确定问题的第二部分。