2017-09-05 73 views
2

我們在升級到struts 2.5.12後使用struts 2.3.xx,我們發現ParameterAware已被棄用,我們必須使用HttpParametersAwareStruts 2.5 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! 

我們可以改變參數,比如我們用來做什麼的支柱2.3.x.錯誤怎麼樣 ?!如果沒有其他選擇?

回答

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/[email protected]