在Struts2拦截器中更改请求参数值

在Struts2拦截器中更改请求参数值

本文介绍了在Struts2拦截器中更改请求参数值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Does anybody know if it is possible to change/remove request parameter values in a Struts2 interceptor?

请求参数 Map UnmodifiableMap 的一个实例,因此看起来它不能在拦截器中操纵。

The request parameter Map is an instance of UnmodifiableMap so it doesn't look like it can be manipulated with in the interceptor.

更新

我正在使用Liferay所以 uParamsMap 将是一个 UnmodifiableMap

I'm using Liferay so uParamsMap will be an 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();
}


推荐答案

可能你可以试试这个。

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

这篇关于在Struts2拦截器中更改请求参数值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-26 04:51