request.getParameterMap()戻り値mapは変更できないmapです
1258 ワード
ありのままの答え
答えを言う前に、まず原因を話しましょう.実はこの問題が発生してとても面白いです.
BaseServiceletを学び、サービスに呼び出しを必要とするメソッドを追加できます.ただし、呼び出す必要があるメソッドは、パラメータ伝達メソッドによって指定する必要があります.form,method=postと書きました登録に似たフォームでしょう.だからhiddenはパラメータを作りましたしかし、あいにく、過去に使用したrequestを渡します.getParameterMap()は、オブジェクトに値を割り当てます.
jsp:
servlet://tobean本質はBeanUtils.populate(bean, map);カプセル化した.エラーを実行して、mapの中に値を割り当てるオブジェクトだけでなく、私が伝えた呼び出し方法のパラメータのk,vもあることを発見しました.
どのようにjspの中で呼び出し方法のパラメータを出して書くか分からないのでservletの中のrequest.getParameterMap()パラメータをremoveに落とす.
結局結局やはりエラー(本編の中心:)
java.lang.IllegalStateException: No modifications are allowed to a locked ParameterMap
字面上の意味も明らかで、mapがロックされていることを意味し、修正は許されません.どうしよう..調べて解決策を見つけた.テストは有効です.
このような方法でmapを作成すれば修正できますが、実は簡単でしょう0,0
なぜ直接付与されたmapが変更できないのか、私は料理が多すぎて、理解できませんでした.ご迷惑をおかけしました.
答えを言う前に、まず原因を話しましょう.実はこの問題が発生してとても面白いです.
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が変更できないのか、私は料理が多すぎて、理解できませんでした.ご迷惑をおかけしました.