JSTL根据后台传输list大小动态创建表格

最近,项目中需要写一个根据后台传入List类型对象的大小来动态创建表格,并在JSP页面中将信息显示出来,并且对于一些特殊信息颜色飘红表示。

首先看一下List对象存储的内容,这个项目需要检测系统中一些服务器的连接情况,每个应用可能关联多个服务器,服务器的数量不同,所以使用List来存储信息,List中的对象是一个长度为2的String数组。这个String数组的第一个位置存放需要检测服务器的ip:port,第二个位置存放是检测结果,结果又两种,连接成功!和连接失败!

例如下面一个String数组。

String[] strs = new String[2];
strs[0] = "192.12.112.87:6777";
strs[1] = "连接成功!";
这个strs对象就是一个list存储对象。

在action类中我们将最终检测结果放入request中,然后使用EL表达式取出相应的数据。

最重要的如何在JSP中动态的创建表格,这里,我们规定每一行显示三条数据,表格的行数需要根据list的大小来创建。

下面看一下JSP中的表现

<c:forEach  begin="1" end="${fn:length(message.checkstatus)/3+1}" step="1" varStatus="vs">
    <tr>
    	<c:forEach var="item" items="${message.checkstatus}" begin="${vs.count*3-3}" end="${vs.count*3-1}" step="1">
    	<span style="white-space:pre">	</span><c:choose>
    		<span style="white-space:pre">	</span><c:when test="${item[1]=='连接失败!'}">
    				<td class="red">${item[0]}</td>
    				<td class="red">${item[1]}</td>
    			</c:when>
    			<c:otherwise>
    				<td>${item[0]}</td>
    				<td>${item[1]}</td>
    			</c:otherwise>
    		</c:choose>
    	</c:forEach>
    </tr>
 </c:forEach>
首先在外层循环控制最终产生的行数,这里end中的表达式最终计算出来的是个浮点数,应该对他进行上取整,但是JSTL中没有提供相应的功能,这里简单的加1出来,如果结果是个整数在表格中可能会空出一行,如果需要修改可以字节写一个上取整方法。

内循环开始想相应的列中写入数据进行显示,使用<c:when>和<c:otherwise>标签进行判断,判断线上信息是否需要进行特殊标志。

对于测试数据我共写了四条进行验证,显示结果如下:


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值