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
我们正在使用 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