我们在升级到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中那样更改参数吗?怎么样 ?!如果没有其他选择?
答案 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