struts2 xml中的动态全局结果

时间:2014-03-27 06:08:08

标签: struts2

我的需求是在struts.xml中有一个全局结果,它具有要重定向到的动作的动态值。 像,

<global-results>
    <result name="customResult" type="redirectAction">
    <param name="actionName">${customValue}</param>
    <param name="namespace">/</param>               
    </result>
</global-results>

这个customResult是从我的一个拦截器返回的。 customValue是getter和setter的同一拦截器的成员。

我知道特定于操作的结果可以包含动态值,前提是动态参数应该在特定操作的execute方法中获取其值。并且,该动态参数应该是该动作类的成员。

因为在全局结果中需要它,所以我将动态参数作为interceptop的成员,我返回该特定的全局结果。但是,这个$ {customValue}在重定向时没有获得值。它被简单地重定向到localhost:9080 / myapp / .action。

请建议

1 个答案:

答案 0 :(得分:2)

动作属性将被放入值堆栈中,这就是为什么在配置中有表达式(如${customValue})时,将使用适当的getter检索值。为了在拦截器内实现相同的行为,您可以将所需的值直接放入值堆栈中。可以从invocationContext

中检索值堆栈
invocation.getInvocationContext().getValueStack()
              .set("customValue", "some_action");