Struts2从interceptor获取值到valuestack以用于重定向结果

时间:2014-11-26 16:28:53

标签: java struts2 interceptor ognl

我的struts.xml文件中有以下操作:

<result name="success">test/success.jsp</result>

<result name="blocked" type="redirect">
    <param name="location">test/blocked.jsp</param>
    <param name="paramkey">${paramvalue}</param>
</result>

第一个结果很好。第二个结果只能在拦截器阻塞请求流时触发,而不是调用动作类而返回结果&#34;阻塞&#34;。到现在为止还挺好。但是,我在评估$ {paramvalue} ognl表达式方面遇到了麻烦。 paramValue的值是在我的动作类中定义的 NOT (通过使用getParamvalue()方法)。相反,我希望拦截器类在valuestack上推送此值,以便正确填充它。我在拦截器类中使用了以下代码段,但表达式$ {paramvalue}保持为空:

ValueStack stack = ActionContext.getContext().getValueStack();
stack.push("paramkey");
stack.set("paramkey", "some_random_test_value");

如何使表达式${paramvalue}在拦截器类中按预期工作?

1 个答案:

答案 0 :(得分:0)

您应该更好地推送该值,因为OGNL从堆栈的顶部向下搜索,如果发现密钥出现,则返回一个值。

ValueStack stack = ActionContext.getContext().getValueStack();
stack.push(new Object() {public String getParamvalue(){return "paramvalue";}});