2012-06-27 34 views
0

我希望我的請求參數映射在我的自定義地圖像在Customiz地圖中獲取請求參數地圖?

Map<String, String> reqMap =(HashMap<String, String>)request.getParameterMap(); 

上述聲明給了我下面的異常

java.lang.ClassCastException: java.util.Collections$UnmodifiableMap 

任何一個可以指導我,我怎樣才能在我的自定義地圖中的所有請求參數? 不想編寫for循環來逐個獲取引起性能問題的參數。

+0

HashMap是您寫的自定義版本嗎?爲什麼? – rooftop

+0

這不是自定義版本。這是Java的唯一。只需要我的新地圖中的請求參數。 – user1041580

回答

1
Map<String, String> reqMap = request.getParameterMap(); 
CustomMap<String, String> customMap = new CustomMap<String,String>(); 
customMap.putAll(reqMap); 

當然,你可能需要通過您putAll()實現地圖元素進行迭代。否則,這是不可能的。

UPDATE: 剛纔看到您的評論,泰國是很容易的話,

Map<String, String> reqMap = request.getParameterMap(); 
Map<String, String> newMap= new HashMap<String,String>(); 
newMap.putAll(reqMap); 

或者,你甚至可以通過reqMap作爲構造參數new HashMap<String, String>(reqMap);

+0

謝謝。這解決了我上面的例外。基本上我在業務層發送這張地圖。所以我無法發送請求對象。但是,在業務層檢索該地圖時,此地圖顯示我想要檢索所有參數的Collections $ UnmodifiableMap 的對象。 Plz建議我 – user1041580

+0

您需要將'newMap'傳遞到您的業務層,而不是'reqMap'。除了遍歷它之外,你不能對'UnmodifiableMap'進行任何操作。在我的回答中,我們創建了一個map('newMap'),它不是** UnmodifiableMap。 –

+0

如何獲得唯一指定參數,例如:通過'http://本地主機:8080 /項目/ PID = 1&CID = 20&開始= 1&結束= 24&UID = 9'?如果我想只得到PID和CID,我怎麼能得到只有這個屬性使用'getParameterMap()' – user2518430

-1

變化:

Map<String, String> reqMap =(HashMap<String, String>)request.getParameterMap(); 

要:

Map<String, String> reqMap =(Map<String, String>)request.getParameterMap(); 
+0

請參閱@ Marcel的答案。 – txedo