错误:java.lang.IllegalStateException: No modifications are allowed to a locked ParameterMap

at org.apache.catalina.util.ParameterMap.remove(ParameterMap.java:205)

1.Servlet中使用了这个方法:request.getParameterMap(),将它的返回值赋值给一个空的hashmap对象结果报错。参考:

it looks like you are trying to *modify* the > received form parameters Map, which under Tomcat's interpretation of > HTTP request handling is a no-no. (The Servlet Spec 3.0 does not > explicitly say so (Chapter 3), but strongly hints in that direction > (there are only "get" methods, no "set" ones).

貌似Servlet规范隐晦的告诉了我们这点。

The relevant info is in the Javadoc for ServletRequest#getParameterMap(). It states quite clearly that the parameter map is immutable.

这个方法的返回值是不可变的。

作者还说一些关键信息却只能在javadoc里找到真是令人抓狂啊~

2.解决方法是:new HashMap(request.getParameterMap())

因为直接用等好赋值只是地址引用,并未改变内存空间,因此无法对之前产生的那个被锁定的map对象进行操作,而使用new方法确实重新申请了内存地址,将该“不可变”的map对象复制到另一个域空间里。

参考:

1.http://goo.gl/pvweu

2.http://goo.gl/AEvPN

https://my.oschina.net/cwalet/blog/35431

不能被修改的原因:

org.apache.catalina.util.ParameterMap

 /*** Associate the specified value with the specified key in this map.  If* the map previously contained a mapping for this key, the old value is* replaced.** @param key Key with which the specified value is to be associated* @param value Value to be associated with the specified key** @return The previous value associated with the specified key, or*  <code>null</code> if there was no mapping for key** @exception IllegalStateException if this map is currently locked*/@Overridepublic V put(K key, V value) {if (locked)throw new IllegalStateException(sm.getString("parameterMap.locked"));return (super.put(key, value));}

转载于:https://www.cnblogs.com/softidea/p/5908899.html

No modifications are allowed to a locked ParameterMap相关推荐

  1. java.lang.IllegalStateException: No modifications are allowed to a locked ParameterMap问题的解决

    java.lang.IllegalStateException: No modifications are allowed to a locked ParameterMap问题的解决 参考文章: (1 ...

  2. Libev documentation

    2019独角兽企业重金招聘Python工程师标准>>> NAME libev - a high performance full-featured event loop writte ...

  3. SAP System Copy Guide, ECC 6.0, Oracle

    感谢jamesyen,主要是借鉴其方法和思路! http://space.itpub.net/?uid-65240-action-viewspace-itemid-684307 SAP Homogen ...

  4. 用linux装逼-我的vim配置(不定时更新)

    把装逼进行到底!提高生活质量,多用键盘,不买鼠标! 我的vimrc插件大致如下: c/c++查找 ctags(一般自带) +cscope 函数提示 echofunc 窗口 taglist + WinM ...

  5. Android P HAL层添加HIDL实例(详细实现步骤)

    Android P HAL层添加HIDL实例 本文是参照 https://www.jianshu.com/p/b80865c61d8e 教程介绍实现,原理请参考原作者. 本文将介绍如何在P OS上添加 ...

  6. AndroidP HIDL 转载

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/sinat_18179367/artic ...

  7. Vim快捷键和:set命令大全

    从CentOS7提取的Vim快捷键和:set命令大全,留下来速查用 *quickref.txt* For Vim version 7.4. Last change: 2013 Jun 29VIM RE ...

  8. 利用DRP动态调整MMCME2时钟频率

    目录 MMCM结构 MMCM输出频率的动态调整 参考设计 参考设计概述 MMCM_DRP模块的端口 MMCM_DRP模块的参数 MMCM_DRP的状态机 实验内容 参考资料 MMCM结构 MMCM的结 ...

  9. AndroidP/Q/R编译系统

    概述 Android编译环境的初始化过程,在编译环境初始化完成后,我们就可以用m/mm/mmm/make命令编译源代码了.当然,这要求每一个模块都有一个Android.mk文件.Android.mk实 ...

最新文章

  1. 如何在Android Studio中查看方法信息?
  2. ANSI C标准函数库
  3. mac笔记本怎么外接显示屏_win to go的安装与Macbook pro外接eGPU开启
  4. ucc编译器(词法分析)
  5. ubuntu14.04编译ffmpeg的过程
  6. 如何彻底干净地卸载McAfee Agent
  7. Python2.爬虫--单词查询程序
  8. 方维o2o系统多通道支付的实现
  9. 12,verilog移位操作
  10. 阿里巴巴第三财季营收1172.78亿元,同比增41%
  11. 将活跃天数转化为等级,输入等级查询活跃天数
  12. 服务器限制网页只能跳转过来,限制网页只能在微信打开
  13. NOJ 水獭看动漫 2001
  14. 201908个人笔记
  15. 高低温湿热试验箱的简介
  16. oracle查询表数据写入时间,求大神解决关于查询Oracle表数据时间
  17. 在微型计算机内存储器中,不能用指令修改其存储内容的部分是,在微型计算机内存储器中,不能用指令修改其存储内容的部分是______。...
  18. 名正则言顺谈服装品牌名称规划
  19. 朴素贝叶斯(Naive Bayes)原理+编程实现拉普拉斯修正的朴素贝叶斯分类器
  20. 联想服务器查raid型号,联想服务器所配备常见SAS RAID卡规格汇总

热门文章

  1. ajax iframe实现文件上传,iframe实现Ajax文件上传效果示例
  2. html li 右跟下有倒影,HTML5 canvas实现的下雨夜湖面星空倒影动画特效
  3. python 乒乓球_python乒乓球
  4. python创建mysql数据库_python 怎么创建create mysql的数据库
  5. 【spring】使用spring的环境配置及从官网获得配置文件所用代码的方法
  6. AE 动画直接变原生代码:Airbnb 发布开源动画库 Lottie
  7. Apache Tomcat 7.0.93 发布,开源 Java Web 应用服务器
  8. Volume是如何工作的
  9. 6.1.1 验证注解的使用
  10. 《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一3.7.5 使用StAX写出XML文档