关于ModelMap的小事

阅读更多
  今天对一个老系统框架的升级,需要修改原先响应的http报文格式。该系统是springMVC实现。
出了点小问题,记录一下。
 
@Override
	public void postHandle(WebRequest request, ModelMap model) throws Exception {
		
			
			
			if(model.get("content")==null){
				Map content=new HashMap();
				for(String key:model.keySet()){
					if(!"status".equals(key)&&!"describe".equals(key)){
						content.put(key, model.get(key));
						model.remove(key);
					}
					
					
				}
				model.put("content", content);
			}
		
			
			
		
			
		}
		
		
		
		
		
		
	}

该方法打算实现将出了modelMap里面原来存储的对象取出来放到一个Map里面,然后存储该Map,但是运行报错ConcurrentModificationException,并发修改异常
原因是 在跌代一个集合的适合无法进行修改,解决方案可以先采用临时集合存储要修改的对象,然后再次修改。
   if(model.get("content")==null){
				JSONObject content=new JSONObject();
				List list=new ArrayList();
				for(String s:model.keySet()){
					if(!"status".equals(s)&&!"describe".equals(s)){
						list.add(s);
						content.put(s,model.get(s));
					}
				}
				for(String s:list){
					model.remove(s);
				}
				
				
		
				model.put("content", content);
			}
		

你可能感兴趣的:(java,spring)