List的add()覆盖了前面的所有元素问题解决

今天做"根据商品查询出所有客户"时出现了所有数据都是最后一条的Bug,调试的时候数据也是取到了,于是又浪费了1个小时的青春...

请看代码

后台代码

		//查找所有客户
		List<Client_info> clientInfoList = client_infoService.findAll();
		
		List<Map<String,String>> dataList=new ArrayList<Map<String,String>>();
                Map<String,String> map = new HashMap<String,String>();
		for(Client_info ci : clientInfoList){			
			//客户id
			String cid =ci.getId();
			String cName=ci.getName();
			//查找goods_client中的唯一记录
			Goods_client goods_client=goods_clientService.findbyGidCid(gid, cid);
			if(goods_client==null){
				goods_client = new Goods_client();
				goods_client.setCid(cid);
				goods_client.setGid(gid);
				goods_client.setAddPrice("0");
				//插入数据到数据库
				goods_clientService.Insert(goods_client);
			}
			String addPrice = goods_client.getAddPrice();
			String id = goods_client.getId().toString();
			map.put("id",id);
			map.put("cid",cid);
			map.put("cName",cName);
			map.put("addPrice", addPrice);
			//放入list
			dataList.add(map);
		}												

前台代码

<#if dataList??> 
	<#list dataList as map>
		 <@fm.gridContent>
		 	<td style="text-align: center"><input type="checkbox" value="${(map['id'])!''}"/></td>
			<td>${(map['cid'])!''}</td>
			<td>${(map['cName'])!''}</td>
			<td>
				<div class="purchase_quantity">
					<input type="text" name="addPrice" id="addPrice" value="${(map['addPrice'])!''}" οnkeyup="clearNoNum(this)" class="goods_nums_text w30">
					<span class="add_j">
						<a href="javascript:void(0)" class="increase">+</a>
						<a href="javascript:void(0)" class="decrease">-</a>
					</span>
				</div>
			</td>
			<td></td>
			<td><a href="">保存</a></td>
	   </@fm.gridContent> 
	</#list>
	</#if>


freemarker取List<Map<String,String>>的值也可以

<#list dataList as map>
	<#list map?keys as itemKey>
	     <#if itemKey="id">
	     	<td>${map[itemKey]}</td>
	     </#if>
	     <#if itemKey="cName">
	     	<td>${map[itemKey]}</td>
	     </#if>
	</#list>
</#list>





最后的效果就是前文提到的

然后查资料说是,java中List是引用类型什么的,必须在for()中new()出来

//放到for循环里面
Map<String,String> map = new HashMap<String,String>();
就可以了

引用大神说的话:对于List<T>来说,如果T是引用类型,那保存的是引用,如果是值类型,保存的是值本身!

参考链接:链接1链接2

发布了30 篇原创文章 · 获赞 76 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/a1275302036/article/details/77978963