Changing request parameter value in Struts2 interceptor

南笙酒味 提交于 2019-12-02 03:14:45

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();
}

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();
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!