问题原因:
你试图将一个 unmodifiableMap 类型的map进行修改,这显然不行,想修改request的请求参数,这里提供一个方案:
对HttpServletRequest包装,在获取map时创建一个普通的map,将参数填充过去即可。
核心代码:
Map<String, String[]> modifiableMap = new HashMap<>();
for (Map.Entry<String, String[]> entry : super.getParameterMap().entrySet()) {
modifiableMap.put(entry.getKey(), entry.getValue());
}
this.parameterMap = modifiableMap;
代替原来的:
this.parameterMap = super.getParameterMap()
然后使用这个包装类:
RepeatBodyRequestWrapper requestWrapper = new RepeatBodyRequestWrapper(request);
Map<String, String[]> parameterMap =requestWrapper.getParameterMap();
parameterMap.put(k, v);
chain.doFilter(requestWrapper, response);