2017-09-05 33 views
2

struts 2.5.12へのアップグレード後にstruts 2.3.xxを使用していますが、ParameterAwareは非推奨であり、HttpParametersAwareを使用する必要があります。Struts 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(",", "")); 

} 

しかし、私たちは、支柱の2.3.x.でそれを行うために使用されるように

HttpParameters are immutable, you cannot put value directly! 

は、我々はパラメータを変更することができ、エラーに直面していますどうやって ?!何もない場合は?

答えて

0

これはhttps://lists.apache.org/[email protected]

を参照してください@YasserZamani

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); 
    } 

完全なクレジットとして行うことができます