jsp两次foreach循环输出list.list()的数据生成不规则table

先来看一下效果吧:

第3、4行最后两个数据是合并的,所以说它不规则。

 

进入正题,我们来看看数据源:

public class LadingInfo implements Serializable{
    //.........
 private List<LadingDetail> ladingDetailList;

}

public class LadingDetail implements Serializable{
    //...................

}

ladingInfo类以ladingDetail类的对象集合的list类型的属性,在数据库中对应了两张表,一下是service层代码:

for (String id : ids) {
			
			LadingInfo ladingInfo= dao.getLadingInfoById(id);

			List<LadingDetail> ladingDetailList = dao.findLadingDetailListByLadingId(id);
			ladingInfo.setLadingDetailList(ladingDetailList);
			ladingList.add(ladingInfo);
			
			}
		}

//controller往jsp返回数据
model.addAttribute("ladingInfoList",ladingInfoList);

小结一下:一个ladingList有很多ladingInfo对象,一个ladingInfo对象有很多ladingDetail对象,ladingDetail作为ladingInfo的属性存储就是一个list集合了。

现在来说说怎么把ladingList这个list中的数据遍历在表中显示出来:

1 <c:forEach items="${ladingInfoList}" var="lading" varStatus="p">
2	<tr>
3		<c:forEach items="${lading.ladingDetailList}" var="detail" varStatus="pd">
4			<c:set var="orderSize" value="${fn:length(lading.ladingDetailList)}"></c:set>
	
5				<c:if test="${pd.index gt 0 }">
6					<tr>
7				</c:if>

8				<td>${detail.maktx} </td> 
9				<td>${lading.consigneeAddress} </td>
10				<td>${lading.consigneeCompany} </td>
												
11				<c:if test="${pd.index eq 0 }">						
12				<td rowspan="${orderSize>0?orderSize:1}"> </td>
13				<td rowspan="${orderSize>0?orderSize:1}">${lading.ladingCode}</td>
14				</c:if>

15			<c:if test="${pd.index gt 0 }">
16				</tr>
17			</c:if>

18		</c:forEach>	
19	</tr>
20</c:forEach>

解释一下:先循环最外面的ladingInfoList,再循环每个对象的list集合属性;

                  第4行定义了一个orderSize,这是最后合并列用的参数,在12行用到了;

           第5行是说,如果大对象(ladingInfo)的list集合的长度大于0时,这里的index是从0开始计算(参见:https://blog.csdn.net/qq_39767955/article/details/82691125),也就是说list里面有两个以上ladingDetail类的对象时,就增加一个<tr>;

               8,9,10行是显示数据(精简的部分代码,不影响整体效果),第10行是说,当前循环list是第一次时(因为这里的pd.index 等于0),那么就显示ladingInfo大对象的数据,并做行合并处理。

                 15行和以后的用过不用解释了,都很简单的。

 

ps:如果你学会了,并喜欢我的博客,请关注,点赞,留言,Thanks♪(・ω・)ノ。写了这么多博客都没有人关注,好气呀。

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值