request.getParameterMap()戻り値mapは変更できないmapです

1258 ワード

ありのままの答え
答えを言う前に、まず原因を話しましょう.実はこの問題が発生してとても面白いです.
BaseServiceletを学び、サービスに呼び出しを必要とするメソッドを追加できます.ただし、呼び出す必要があるメソッドは、パラメータ伝達メソッドによって指定する必要があります.form,method=postと書きました登録に似たフォームでしょう.だからhiddenはパラメータを作りましたしかし、あいにく、過去に使用したrequestを渡します.getParameterMap()は、オブジェクトに値を割り当てます.
jsp:

servlet://tobean本質はBeanUtils.populate(bean, map);カプセル化した.エラーを実行して、mapの中に値を割り当てるオブジェクトだけでなく、私が伝えた呼び出し方法のパラメータのk,vもあることを発見しました.
Customer cus = JavaBeanUtils.toBean(Customer.class, request.getParameterMap());

どのようにjspの中で呼び出し方法のパラメータを出して書くか分からないのでservletの中のrequest.getParameterMap()パラメータをremoveに落とす.
結局結局やはりエラー(本編の中心:)
java.lang.IllegalStateException: No modifications are allowed to a locked ParameterMap 
字面上の意味も明らかで、mapがロックされていることを意味し、修正は許されません.どうしよう..調べて解決策を見つけた.テストは有効です.
		//    
//		Map map = request.getParameterMap();//       map        map
		Map map = new HashMap(request.getParameterMap());
        map.remove("funcName");

このような方法でmapを作成すれば修正できますが、実は簡単でしょう0,0
なぜ直接付与されたmapが変更できないのか、私は料理が多すぎて、理解できませんでした.ご迷惑をおかけしました.