Changing request parameter value in Struts2 interceptor

后端 未结 2 1389
太阳男子
太阳男子 2021-01-25 13:20

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

相关标签:
2条回答
  • 2021-01-25 14:13

    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();
    }
    
    0 讨论(0)
  • 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();
    }
    
    0 讨论(0)
提交回复
热议问题