关于修改前端请求原生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);

浙公网安备 33010602011771号