关于修改前端请求原生request加锁问题
1
正常情况后端获取前端的request请求:(原生已加锁,修改失效 校验)
Map<String, String[]> parameterMap = req.getParameterMap(); ...... 报错:错误:java.lang.IllegalStateException: No modifications are allowed to a locked ParameterMap at org.apache.catalina.util.ParameterMap.remove(ParameterMap.java) 解决办法:重新在堆里创建新的对象 Map<String,String[]> parameterMap = new HashMap<>(req.getParameterMap()); String[] superQueryArr = parameterMap.get("superQueryParams"); String[] newSuperQueryArr = new String[superQueryArr.length]; int arrSize = superQueryArr.length; if(arrSize>0) { int index = 0; for (String s : superQueryArr) { //专门对日期类型高级查询比较进行设置(eg:审核日期大于查询日期,实际获取的应该是查询日期之前的数据) if ((s.contains("date") || s.contains("datetime"))) { if (s.contains("gt")) { s.replace("gt", "lt"); } else if (s.contains("lt")) { s.replace("lt", "gt"); } else if (s.contains("ge")) { s.replace("ge", "le"); } else if (s.contains("le")) { s.replace("le", "ge"); } } newSuperQueryArr[index++] = s; } } parameterMap.put("superQueryParams",newSuperQueryArr);