Struts 2.5 ParameterAware和HttpParametersAware

时间:2017-09-05 06:49:31

标签: java struts2

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

问题

有一个操作类在操作之前扩展ParameterAware更改一些参数(例如,删除输入掩码会从,删除123,456,789):< / p>

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中那样更改参数吗?怎么样 ?!如果没有其他选择?

1 个答案:

答案 0 :(得分:0)

这可以作为

完成
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