代码:
public @ResponseBody Object getCommonInfo(HttpServletRequest request, HttpServletResponse response) {
Map<String, String[]> parameterMap = request.getParameterMap();
String[] timeArray = { System.currentTimeMillis() + "", };
parameterMap.put("timeStamp", timeArray);
fluentLogSender.sendLog2("Appstore", parameterMap);
ResponseUtils.writeResponse(response, ErrorResponse.getEmptyResult());
return null;
}
抛出异常为:
java.lang.IllegalStateException: No modifications are allowed to a locked ParameterMap
at org.apache.catalina.util.ParameterMap.put(ParameterMap.java:164)
at com.hisense.hitv.appstoreapi.controller.AppAdversingController.getCommonInfo(AppAdversingController.java:104)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
…………
这是由于通过 request.getParameterMap() 获取的map是不允许修改的。(不知道为什么~~)
解决 方法是新建一下map来接收 request.getParameterMap()的值。
直接赋值是地址引用 ,没有分配新的内存空间, 使用new方法可以申请新的内存地址,map的值可以进行修改。