gpt4 book ai didi

java - 放入 Map 时出现非法状态异常

转载 作者:行者123 更新时间:2023-12-02 15:16:25 27 4
gpt4 key购买 nike

我不明白为什么我会收到臭名昭著的“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]);
}
}
}

谁能帮我解答一下吗?

最佳答案

您提供了不可修改的 map 。例如, ServletRequest#getParameterMap() 是不可变的。如果您无法控制提供的 map ,那么您需要创建一个新 map ,将新项目放入其中,返回并使用它。

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;
}

如果您实际上为此使用 servlet 请求参数映射,那么您希望在 HttpServletRequestWrapper 的帮助下替换原始参数映射。在 Filter 。但这是一个完全不同的故事:)

<小时/>

与具体问题无关,您应该 url-decode查询字符串部分,然后将它们放入新 map 中。

关于java - 放入 Map 时出现非法状态异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5720536/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com