我想制作一个拦截器来预处理XML请求。在此拦截器中,它解析XML并将处理后的信息放入ValueStack,以便它可以映射到操作中的实例。但是,我尝试了很多方法,但没有一个是有效的。任何人都可以帮助我并给我建议吗?谢谢!
拦截器
//获取ValueStack
ActionContext ctx = invocation.getInvocationContext();
映射ctxMap = ctx.getValueStack()。getContext();//尝试过以下操作,但以下任何一项均无效 ctxMap.get( “com.opensymphony.xwork2.ActionContext.parameters”))。把( “数据1”, “1”);
ctxMap.get(“parameters”))。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
}
答案 0 :(得分:2)
您应该将处理后的值添加到拦截器
中的值堆栈中ActionContext.getContext()getValueStack()的setValue(" DATA1",yourdata);
如果在拦截器调用时创建了动作实例,则应该添加该值。如果它不起作用,拦截器堆栈的顺序应该有问题。尝试将拦截器放在堆栈的底部,这样我们就可以保证其余的处理结束并且对你的action属性的绑定正在按预期工作。