Struts 2.5 ParameterAware 和 HttpParametersAware

Struts 2.5 ParameterAware and HttpParametersAware

我们正在使用 struts 2.3.xx 升级到 struts 2.5.12 后我们发现 ParameterAware 已弃用,我们必须使用 HttpParametersAware.

问题

有一个操作 class 扩展了 ParameterAware 并且 在操作之前更改了一些参数 (它删除了输入掩码,例如删除了 ,来自 123,456,789) :

public class Sample extends ActionSupport implements
        ModelDriven<SampleVO>,ParameterAware {


    @Override
    public void setParameters(Map<String, String[]> parameters) {
        for (String[] values : parameters.values()) {
            for (int i = 0; i < values.length; i++) {
                values[i] = Mask.removeMask(values[i]);
            }
        }
    }

}

我们尝试用新的 HttpParametersAware 和类似的东西来做到这一点:

 for (Entry<String, Parameter> entry : parameters.entrySet()) {
             String key = entry.getKey();                
             Parameter newParam =  new Parameter.Request( key, entry.getValue().getValue().replaceAll(",", ""));

}

但是我遇到了错误

HttpParameters are immutable, you cannot put value directly! 

我们可以像在 struts 2.3.x 中那样更改参数吗?如何 ?!如果没有其他选择?

这可以做到

public void setParameters(HttpParameters parameters) {
         Map<String, Parameter> newParams = new HashMap<String,Parameter>();
         for(String key :parameters.keySet()){
             Parameter p = parameters.get(key);
             if(p instanceof Parameter.Request){
                 newParams.put(key, new Parameter.Request(key, new String[] {"new"+p.getValue()}));
             }
         }
         parameters.appendAll(newParams);
     }

感谢@YasserZamani

请看https://lists.apache.org/list.html?user@struts.apache.org