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


    如下:

    这两天做一个功能,一个页面有多个同样的对象(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;

  • 相关阅读:
    LeetCode 217. 存在重复元素
    LeetCode 48. 旋转图像
    LeetCode 35. 搜索插入位置
    LeetCode 27. 移除元素
    LeetCode 145. 二叉树的后序遍历 (用栈实现后序遍历二叉树的非递归算法)
    LeetCode 328. 奇偶链表
    LeetCode 160. 相交链表 (找出两个链表的公共结点)
    LeetCode 26. 删除排序数组中的重复项
    LeetCode 836. 矩形重叠
    数据库
  • 原文地址:https://www.cnblogs.com/xh_Blog/p/11474024.html
Copyright © 2020-2023  润新知