hdx*_*hdx 2 java exception illegalstateexception
我不明白为什么我得到臭名昭着的"IllegalStateException"与以下代码:
private void mergeQueryStrings(String url, Map parameterMap) {
String queryString = getQueryString(url);
if(queryString!=null){
String [] params = queryString.split("&");
for(String param:params){
parameterMap.put(param.split("=")[0], param.split("=")[1]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
谁能开导我?
你提供了一个不可修改的地图.例如,它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;
}
Run Code Online (Sandbox Code Playgroud)
如果您实际上正在使用servlet请求参数映射,那么您希望HttpServletRequestWrapper在a的帮助下替换原始的Filter.但这是一个完全不同的故事:)
与具体问题无关,您应该在将查询字符串部分放入新地图之前对其进行URL解码.
| 归档时间: |
|
| 查看次数: |
650 次 |
| 最近记录: |