struts标签绑定Map>>

早先时候已经有一篇写到struts的iterator标签去遍历些基本的集合数据了,比如单个对象的List啊,多个对象的List啊,map等等。最近呢又遇见两种情况,在这里给记录一下,方便自己以后能随时查看,也希望能在一定程度上帮助到大家。

第一种情况是,这里首先有两个表,一个表是客户表(CustomerInfo),一个表是收货人表(TakerInfo),两个表中,都有姓名(name)和电话(cellphone)的属性,根据页面输入的一系列条件,如name,cellphone等去查询两表,得到一个存放着customerinfo和takerinfo的集合。并将这个集合绑定到页面,并标示出,这个人是来自于客户表,还是来自于收货人表。

action代码如下:

Java代码
  1. privateMap<String,List>map;/包含客户和取货人的map集合
  2. privateList<TakerInfo>list;//取货人list
  3. privateList<CustomerInfo>list2;//客户list
  4. publicStringgetAllUserLs(){
  5. map=newHashMap<String,List>();
  6. list=takerInfoDao.getAllTakers();//dao层实现省略,此处不是重点
  7. list2=customerInfoDao.getAllCus();
  8. if(list.size()>0&&list2.size()>0)
  9. map.add("takers",list);
  10. map.add("customers",list2);
  11. returnSUCCESS;
  12. }

绑定该map的页面代码如下:

Jsp代码
  1. <s:iteratorvalue="map3"var="var">
  2. <s:iftest="#var.key=='takers'">
  3. <s:iteratorvalue="#var.value"var="takerInfo">
  4. <tr>
  5. <td>真实姓名:<s:propertyvalue="#takerInfo.RealName"/></td>
  6. <td>手机号码:<s:propertyvalue="#takerInfo.Cellphone"/></td>
  7. </tr>
  8. </s:iterator>
  9. </s:if><s:else>
  10. <s:iteratorvalue="#var.value"var="customerInfo">
  11. <tr>
  12. <td>真实姓名:<s:propertyvalue="#customerInfo.customerRealName"/></td>
  13. <td>手机号码:<s:propertyvalue="#customerInfo.customerCellphone"/></td>
  14. </tr>
  15. </s:iterator>
  16. </s:else>
  17. </s:iterator>

上面页面和代码我都尽量写得最清楚直白了,方便大家理解,很多方法的实现或者页面上的其他字段,样式,js我都抹掉了。

第二种情况是,有一个得到所有城市的接口[返回的值里存有城市名称和城市的id等信息],有一个根据单个城市id得到这个城市下,所有车辆品牌的接口[返回的值里,存有一个城市下的所有车辆的品牌id,品牌名称等信息]。

这里需要实现就是,在一个页面上,显示出所有车辆品牌名称,并显示它是属于哪个城市下的,如有是上海有10个车辆品牌,武汉有10个车辆品牌,你得显示这20辆车的详细,并指出它是哪个城市下的。

action的代码如下:

Java代码
  1. privateList<Map<String,Object>>brandsMapList;//一个城市下所有品牌的map
  2. privateList<Map<String,Object>>regionMapList;//所有城市map,以此获得所有的城市的id
  3. privateMap<String,List<Map<String,Object>>>allBrandMap;//所有城市的,所有品牌map
  4. publicStringshowAllBrand(){
  5. //实例化
  6. allBrandMap=newHashMap<String,List<Map<String,Object>>>();
  7. //得到所有城市
  8. regionMapList=Dom4jUtil.parserXmlStr(carBrandService.getCitys());
  9. for(inti=0;i<regionMapList.size();i++){
  10. //得到单个城市下的所有brand
  11. brandsMapList=Dom4jUtil.parserXmlStr(carBrandService.getSelfDriveServiceCityBrands(regionMapList.get(i).get("id").toString()));
  12. //所有城市下的,所有brand
  13. allBrandMap.put(regionMapList.get(i).get("name").toString(),brandsMapList);
  14. }
  15. }

绑定该集合的jsp页面是:

Jsp代码
  1. <s:iteratorvalue="allBrandMap"status="index"var="citys">
  2. <s:iftest="#citys.value!=null">
  3. <s:iteratorvalue="#citys.value"var="brand">
  4. <tr>
  5. <td><s:propertyvalue="#brand.name"/></td>
  6. <td><s:propertyvalue="#citys.key"/></td>
  7. <td>[查看][删除]</td>
  8. </tr>
  9. </s:iterator>
  10. </s:if>
  11. </s:iterator>

你可能感兴趣的:(struts)