对封装的再次理解(容器)

如下:

这两天做一个功能,一个页面有多个同样的对象(List),进入页面需要遍历list,但是这个list中还有一个list,不是同一张表,一个是另一个的子表,单个对象的保存搞定了,但是遍历时对'对象'的封装没有思绪,根本没往这块想,折腾了好久;

后来想到了容器,不就是一个大箱子里面套了另一个小箱子吗?很常见,但是从来没有往这里想过;

解决方法,在大对象里面再加一个属性,该属性对应的就是小对象的list,在大对象里面set进去就可以了,在页面进行双重遍历即可;相关代码如下:

大对象实体类:

public class CrmCounterguaranteeProWithBLOBs extends CrmCounterguaranteePro
{
    @Getter
    @Setter
    private String otherinfo;

    @Getter
    @Setter
    private String remarks;
    
    @Getter
    @Setter
    public List<CrmReveOwners> reveOwners;//封装的小对象
}

数据关联

// "房产",(2),
List<CounterGuaranteeInfo> houses = new ArrayList<CounterGuaranteeInfo>();
//查询抵押反担保共有人、所有人信息
if (null != info && null != info.getGuaranteeInfo()) 
{
    CrmReveOwnersExample dyExample =new CrmReveOwnersExample();
    dyExample.createCriteria().andProjidEqualTo(info.getGuaranteeInfo().getProjid()).andFaserialidEqualTo(info.getGuaranteeInfo().getFaserialid());
    listhousesOwners = crmReveOwnersDao.selectByExample(dyExample);
}
//封装共有人信息到对象
if (null != listhousesOwners && listhousesOwners.size()>0) 
{
    info.getGuaranteeInfo().setReveOwners(listhousesOwners);                    }
houses.add(info);
result.put("houseReveInfos" + revetype, houses);//返回到页面的数据

在页面遍历显示:

<!-- 房屋抵押 -->
<s:if test="!#request.guarantees.houseReveInfos1.isEmpty">
<s:iterator value="#request.guarantees.houseReveInfos1" var="house" status="sts">
<tr>  
      <td  style="text-align:center;">
         <img  src="<s:url value="/css/themes/icons/updown.png" />"   style="cursor:pointer" onclick="showDiv('housebz<s:property value="#sts.count"/>')"/>
      </td>
      
      <td style="text-align:center;">抵押-房产</td>
      
      <td style="text-align:center;">
            <s:if test='#house.exInfo.customerType == "1"'><s:property value="#house.exInfo.legal.name"/></s:if>       
            <s:elseif test='#house.exInfo.customerType == "2"'><s:property value="#house.exInfo.person.name"/></s:elseif>
      </td>
      
      <td style="text-align:center;">           
          <s:property value="#house.guaranteeInfo.rrightlid"/>
      </td>
      
      <td style="text-align:center;">           
          <s:property value="#house.guaranteeInfo.originalvalue"/>
      </td>
      
      <td style="text-align:center;">           
          <s:property value="#house.guaranteeInfo.hypovalue"/>
      </td>
      
       <td  style="text-align:center;">
        <img  src="<s:url value="/css/themes/icons/pencil.png" />"  alt="编辑数据" 
        style="cursor:pointer"
        onclick="openInnerWinByOwnerShip('edit','','<s:property value="projid"/>','<s:property value="customerid"/>',
                                '1','2','<s:property value="#house.guaranteeInfo.faserialid" />','deposit_guarantee')"/>
       
        <img  src="<s:url value="/css/themes/icons/cancel.png" />"  alt="删除数据" 
         style="cursor:pointer"
        onclick="delGuaranteeInfo('<s:property value="projid"/>','<s:property value="customerid"/>',
                                '1','2','<s:property value="#house.guaranteeInfo.faserialid" />')"/>&nbsp;
        </td>
 </tr>
 <tr>
 <td colspan="7">
 <div id="housebz<s:property value="#sts.count"/>"  style="display:none">
     <table cellspacing=0 cellpadding=0 border=0 width="80%" class="reporttable border1">
     <tr>   
          <td width="20%" class="td_left"><s:if test="#request.guarantees.houseReveInfos1.size>1"><div style="float:left;margin-left:10px;">(<s:property value="#sts.count"/>)</div></s:if>姓名:房屋名称:</td>
          <td align="left" width="30%">
               <s:property value="#house.guaranteeInfo.rrightname"/></td>
          <td width="20%" class="td_left">权证编号:</td>
          <td align="left" width="30%">           
              <s:property value="#house.guaranteeInfo.rrightlid"/>
          </td>
     </tr>
    ........
    <tr>
          <td width="20%" class="td_left">
              <s:if test="#house.guaranteeInfo.owner == 1 || #house.guaranteeInfo.owner == 0">
                    是否存在共有人:
              </s:if>
              <s:else>
                    所有/共有人:
              </s:else>
          </td>
          <td align="left">
              <s:if test="#house.guaranteeInfo.owner == 1 || #house.guaranteeInfo.owner == 0">
                  <dict:message dictTypeId="BMS_COMM_YESNO" value="%{#house.guaranteeInfo.owner}"/>
              </s:if>
              <s:else>
                  <s:property value="#house.guaranteeInfo.owner"/>                                      
              </s:else>
          </td>
         <td width="20%" class="td_left">是否与项目关联:</td>
          <td align="left" >
                <dict:message dictTypeId="IS_LINK_PROJ" value="%{#house.guaranteeInfo.islinkproj}"/>
          </td>
    </tr>

    <s:if test="#house.guaranteeInfo.owner == 1 && !#house.guaranteeInfo.reveOwners.isEmpty ">
        <tr  id="ownersMsg" > 
            <td width="20%" class="td_left">所有/共有人:</td>
            <td align="left"  colspan="3"  >
                <s:if test="#house.guaranteeInfo. == 1 
                <table class="report_table border1" style="100%" id="revepersonid">
                    <tr class="tr_title">           
                        <td  style="10px;text-align:center;">类型</td>    
                        <td  style="20px;text-align:center;">姓名</td>
                        <td  style="30%;text-align:center;" >身份证</td>  
                        <td  style="10%;text-align:center;" >性别</td>  
                        <td  style="15%;text-align:center;" >电话</td>      
                        <td  style="15%;text-align:center;" >与借款人关系</td>      
                    </tr>
                    <s:iterator value="#house.guaranteeInfo.reveOwners" var="dyOwners" status="stus">
                        <tr >  
                            <td style="text-align:center;">
                                <dict:message dictTypeId="BMS_COUSTOMER_TYPE" value="%{ownertype}"/>
                            </td>
                            <td style="text-align:center;">
                                <s:property value="ownersname"/>
                            </td>
                            <td style="text-align:center;">
                                <s:property value="owneridcode"/>
                            </td>
                            <td style="text-align:center;">
                                <s:property value="ownersex"/>
                            </td> 
                            <td style="text-align:center;">
                                <s:property value="linktel"/>
                            </td>
                            <td style="text-align:center;">
                                <dict:message dictTypeId="BMS_FAMILY_MEMBERS_RELA" value="%{relation}"/>
                            </td>
                        </tr>
                    </s:iterator>
                </table>
            </td>
        </tr>
    </s:if>

end;

原文地址:https://www.cnblogs.com/xh_Blog/p/11474024.html