今天做"根据商品查询出所有客户"时出现了所有数据都是最后一条的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是引用类型,那保存的是引用,如果是值类型,保存的是值本身!