(Struts2) Как добавить новые параметры в экземпляр Action из перехватчика?

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

В Interceptor

//Получить стек значений
ActionContext ctx = invocation.getInvocationContext();
Сопоставить ctxMap = ctx.getValueStack().getContext();

// Пробовали следующее, но ничего из следующего не работает
ctxMap.get(com.opensymphony.xwork2.ActionContext.parameters)).put(data1, 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
}

person PatYuen    schedule 06.05.2012    source источник
comment
Место, где вы размещаете перехватчик, имеет значение. Не могли бы вы также предоставить созданный вами стек перехватчиков, чтобы мы могли убедиться, что вы размещаете перехватчик в нужном месте.   -  person Quaternion    schedule 07.05.2012


Ответы (1)


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

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

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

person Bibin    schedule 13.05.2012
comment
Большое спасибо за ваше предложение. - person Shivam; 10.06.2020