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相关推荐
- java.lang.IllegalStateException: No modifications are allowed to a locked ParameterMap问题的解决
java.lang.IllegalStateException: No modifications are allowed to a locked ParameterMap问题的解决 参考文章: (1 ...
- Libev documentation
2019独角兽企业重金招聘Python工程师标准>>> NAME libev - a high performance full-featured event loop writte ...
- SAP System Copy Guide, ECC 6.0, Oracle
感谢jamesyen,主要是借鉴其方法和思路! http://space.itpub.net/?uid-65240-action-viewspace-itemid-684307 SAP Homogen ...
- 用linux装逼-我的vim配置(不定时更新)
把装逼进行到底!提高生活质量,多用键盘,不买鼠标! 我的vimrc插件大致如下: c/c++查找 ctags(一般自带) +cscope 函数提示 echofunc 窗口 taglist + WinM ...
- Android P HAL层添加HIDL实例(详细实现步骤)
Android P HAL层添加HIDL实例 本文是参照 https://www.jianshu.com/p/b80865c61d8e 教程介绍实现,原理请参考原作者. 本文将介绍如何在P OS上添加 ...
- AndroidP HIDL 转载
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/sinat_18179367/artic ...
- Vim快捷键和:set命令大全
从CentOS7提取的Vim快捷键和:set命令大全,留下来速查用 *quickref.txt* For Vim version 7.4. Last change: 2013 Jun 29VIM RE ...
- 利用DRP动态调整MMCME2时钟频率
目录 MMCM结构 MMCM输出频率的动态调整 参考设计 参考设计概述 MMCM_DRP模块的端口 MMCM_DRP模块的参数 MMCM_DRP的状态机 实验内容 参考资料 MMCM结构 MMCM的结 ...
- AndroidP/Q/R编译系统
概述 Android编译环境的初始化过程,在编译环境初始化完成后,我们就可以用m/mm/mmm/make命令编译源代码了.当然,这要求每一个模块都有一个Android.mk文件.Android.mk实 ...
最新文章
- 如何在Android Studio中查看方法信息?
- ANSI C标准函数库
- mac笔记本怎么外接显示屏_win to go的安装与Macbook pro外接eGPU开启
- ucc编译器(词法分析)
- ubuntu14.04编译ffmpeg的过程
- 如何彻底干净地卸载McAfee Agent
- Python2.爬虫--单词查询程序
- 方维o2o系统多通道支付的实现
- 12,verilog移位操作
- 阿里巴巴第三财季营收1172.78亿元,同比增41%
- 将活跃天数转化为等级,输入等级查询活跃天数
- 服务器限制网页只能跳转过来,限制网页只能在微信打开
- NOJ 水獭看动漫 2001
- 201908个人笔记
- 高低温湿热试验箱的简介
- oracle查询表数据写入时间,求大神解决关于查询Oracle表数据时间
- 在微型计算机内存储器中,不能用指令修改其存储内容的部分是,在微型计算机内存储器中,不能用指令修改其存储内容的部分是______。...
- 名正则言顺谈服装品牌名称规划
- 朴素贝叶斯(Naive Bayes)原理+编程实现拉普拉斯修正的朴素贝叶斯分类器
- 联想服务器查raid型号,联想服务器所配备常见SAS RAID卡规格汇总
热门文章
- ajax iframe实现文件上传,iframe实现Ajax文件上传效果示例
- html li 右跟下有倒影,HTML5 canvas实现的下雨夜湖面星空倒影动画特效
- python 乒乓球_python乒乓球
- python创建mysql数据库_python 怎么创建create mysql的数据库
- 【spring】使用spring的环境配置及从官网获得配置文件所用代码的方法
- AE 动画直接变原生代码:Airbnb 发布开源动画库 Lottie
- Apache Tomcat 7.0.93 发布,开源 Java Web 应用服务器
- Volume是如何工作的
- 6.1.1 验证注解的使用
- 《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一3.7.5 使用StAX写出XML文档