Вы предоставили неизменяемую карту.Например, ServletRequest#getParameterMap()
является неизменным.Если у вас нет контроля над поставляемой картой, вам нужно создать новую карту, поместить туда новые элементы, вернуть ее и использовать вместо нее.
private Map mergeQueryStrings(String url, Map parameterMap) {
Map newParameterMap = new HashMap(parameterMap);
String queryString = getQueryString(url);
if(queryString!=null){
String [] params = queryString.split("&");
for(String param:params){
newParameterMap.put(param.split("=")[0], param.split("=")[1]);
}
}
return newParameterMap;
}
Если вы были на самом деле , используя для этого карту параметров запроса сервлета, затем вы хотели бы заменить исходную с помощью HttpServletRequestWrapper
в Filter
.Но это совсем другая история:)
Не связанная с конкретной проблемой, вы должны url-декодировать части строки запроса, прежде чем помещать их в новыйкарта.