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>标签进行判断,判断线上信息是否需要进行特殊标志。
对于测试数据我共写了四条进行验证,显示结果如下:
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。