1

我想制作一个拦截器来预处理 XML 请求。在这个拦截器中,它解析 XML 并将处理后的信息放入 ValueStack 中,以便它可以映射到操作中的实例。但是,我尝试了很多方法,但没有一个是有效的。任何人都可以帮助我并给我建议吗?谢谢!

In Interceptor

//Get ValueStack
ActionContext ctx = invocation.getInvocationContext();
映射 ctxMap = ctx.getValueStack().getContext();

//尝试了以下,但以下都不行
ctxMap.get("com.opensymphony.xwork2.ActionContext.parameters")).put("data1", "1");
ctxMap.get("参数")).put("data1", "1");
ctxMap.get("request")).put("data1", "1");
ctx.getParameters().put("data1",new String[]{"1"});

//Sample Action Class
public class TestAction extends ActionSupport {
     private String data1;
     public String execute() {  
         System.out.println("data1 value: " + data1);
         return SUCCESS;
     }
//Get Setter is omitted here
}
4

1 回答 1

3

您应该将处理后的值添加到拦截器内的值堆栈中

ActionContext.getContext().getValueStack().setValue("data1",yourdata);

如果您的操作实例已在拦截器调用时创建,则应添加该值。如果它不工作,你的拦截器堆栈的顺序应该有问题。尝试将你的拦截器放在堆栈的底部,这样我们就可以保证剩下的处理已经结束,并且绑定到你的动作属性是按要求工作的。

于 2012-05-13T14:55:53.817 回答