簡體   English   中英

Struts 2.5 ParameterAware和HttpParametersAware

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM