【问题标题】:Changing request parameter value in Struts2 interceptor在 Struts2 拦截器中更改请求参数值
【发布时间】:2023-03-19 23:59:01
【问题描述】:

有人知道是否可以在 Struts2 拦截器中更改/删除请求参数值吗?

请求参数MapUnmodifiableMap 的一个实例,因此它看起来无法在拦截器中进行操作。

更新:

我正在使用 Liferay,所以 uParamsMap 将成为 UnmodifiableMap

public String intercept(ActionInvocation invocation) throws Exception {
    final ActionContext context = invocation.getInvocationContext();
    PortletRequest request = (PortletRequest) context.get(REQUEST);
    Map<String, String[]> uParamsMap = request.getParameterMap();
    return invocation.invoke();
}

【问题讨论】:

  • 你到底想对参数做什么?您可以排除它们。
  • 我有一个用于输入验证的拦截器,并且想要更改可疑的拦截器。我不想完全删除它们,因为其中一些可能是合法的
  • 忘了说我正在使用 Liferay
  • invocation.getInvocationContext().getParameters().
  • 我将尝试在InvocationContext 参数中设置值,而不是PortletRequest。谢谢

标签: java struts2 request liferay-6 interceptor


【解决方案1】:

也许你可以试试这个。

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

【讨论】:

  • 是的,在看到你回答之前,我实际上已经以这种方式解决了它,所以我会接受它
【解决方案2】:

我的代码中有类似的问题,但上面的解决方案对我不起作用。

如果您想在拦截器中的任何参数到达动作类之前对其进行更改,请使用以下代码:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多