Does anybody know if it is possible to change/remove request parameter values in a Struts2 interceptor?
The request parameter Map
is an instance of Un
I had a similar problem in my code, but the solution above didn't work for me.
If you want to make changes to any parameters in the Interceptor before they get to the action class use this code:
@Override
public String intercept(ActionInvocation ai) throws Exception {
ValueStack stack=ai.getStack();
Iterator it = stack.getRoot().iterator();
while( it.hasNext() )
{
Object objecto = it.next();
//LoginUsuario is my action class
if( objecto instanceof LoginUsuario )
{
LoginUsuario usuario = (LoginUsuario)objecto;
usuario.setUsername( usuario.getUsername().toUpperCase() );
usuario.setPassword( usuario.getPassword().toUpperCase() );
}
}
return ai.invoke();
}
May be you can try as this.
public String intercept(ActionInvocation invocation) throws Exception {
final ActionContext context = invocation.getInvocationContext();
Map<String,Object> parameters = (Map<String,Object>)context.get(ActionContext.PARAMETERS);
Map<String, Object> parametersCopy = new HashMap<String, Object>();
parametersCopy.putAll(parameters);
parametersCopy.put("myParam", "changedValue");
context.put(ActionContext.PARAMETERS, parametersCopy);
return invocation.invoke();
}