我的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}
在拦截器类中按预期工作?
答案 0 :(得分:0)
您应该更好地推送该值,因为OGNL从堆栈的顶部向下搜索,如果发现密钥出现,则返回一个值。
ValueStack stack = ActionContext.getContext().getValueStack();
stack.push(new Object() {public String getParamvalue(){return "paramvalue";}});