2012-05-06 2 views
1

Я хочу, чтобы сделать перехватчик для предварительного запроса XML-запроса. В этом перехватчике он анализирует XML и помещает обработанную информацию в ValueStack, чтобы он мог сопоставлять экземпляр в действии. Тем не менее, я пробовал так много методов, но ни один из них не работает. Может ли кто-нибудь помочь мне и дать мне советы? Благодаря!(Struts2) Как добавить новые параметры в экземпляр Action из перехватчика?

В перехватчик

// Получить ValueStack
ActionContext CTX = invocation.getInvocationContext();
Карта ctxMap = ctx.getValueStack(). GetContext();

// попытался следующие, но ни один из следующих не является работа
ctxMap.get ("com.opensymphony.xwork2.ActionContext.parameters")) поставил ("data1", "1").
ctxMap.get («параметры»)). Put («data1», «1»);
ctxMap.get («запрос»)). 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

Где вы помещаете перехватчик, имеет значение, вы также можете поставить стек перехватчика, который вы создали, чтобы мы могли обеспечить, чтобы вы перехватили перехватчик в нужном месте. – Quaternion

ответ

2

Вы должны добавить обработанное значение в стек значений внутри перехватчик

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

Если ваш экземпляр действия был создан во время вызова перехватчика, он должен добавить значение. Если он не работает, должно быть что-то не так с порядком вашего перехватчика. Попытайтесь поместить ваш перехватчик в нижнюю часть стека, чтобы мы могли гарантировать, что остальная обработка завершена, и привязка к свойству действия работает по желанию.

Смежные вопросы