[英]Struts 2.5 ParameterAware and HttpParametersAware
升級到struts 2.5.12后,我們使用的是struts 2.3.xx,我們發現ParameterAware
已過時,必須使用HttpParametersAware
。
問題
有延伸的操作類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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.