struts标签绑定Map>>

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

 

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

action代码如下:

 

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

 

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

 

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

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

 

 

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

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

 

action的代码如下:

 

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

 

绑定该集合的jsp页面是:

 

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

你可能感兴趣的:(struts2)