我在jsp中使用了2个模型:
<c:forEach items="${ch}" var="contractHeader">
Display data ...
<table>
Display TD
<c:forEach items="${ce}" var="contractEntitlement">
<c:if test="${contractHeader.id == contractEntitlement.chId}" >
Display TR
</c:if>
</c:forEach>
</c:forEach>
基于此,只有来自contractHeader的id等于来自contractEntitlement的chid才会显示记录。这有效,但问题是如果没有contractEntitlement的记录,TD仍然显示空表。
我想使用布尔值为TD添加额外的条件来执行以下操作:
boolean test = false;
<c:forEach items="${ce}" var="contractEntitlement">
<c:if test="${contractHeader.id == contractEntitlement.chId}" >
test = true;
exit loop;
</c:if>
</c:foreach>
if (test)
<table>
Show TD
Use exisiitng code to loop thru each records
</table>
输出是,如果没有记录根本不创建表,任何帮助都表示赞赏。
答案 0 :(得分:1)
首先,我认为TR应该在TD之外。 TR之外有TD,这是错误的。除此之外,我尝试解决方法是尝试将TD置于if语句中?像这样:
<forEach ....>
<table>
<c:forEach items="${ce}" var="contractEntitlement">
<c:if test="${contractHeader.id == contractEntitlement.chId}" >
Display TR
Display TD .... END OF DISPLAY TD
Display TR, end of
</c:if>
</c:forEach>
</table>
</forEach ...>
修改:
或者如果您想保持表结构不变,那么您可以尝试使用CSS来隐藏空单元格/列。
给你的表这样一个类:
table class="myTable"
然后,在CSS
<head> ... </head>
<style>
.myTable{
empty-cells: hide;
}
</style>
这样玩,我相信你可以隐藏TD ......
编辑2:
在阅读OP的进一步评论后,OP应该尝试将整个表创建内容置于if语句中。当if语句为true时,只有那时才会创建一个新表。它看起来像这样:
<forEach ....>
<c:forEach items="${ce}" var="contractEntitlement">
<c:if test="${contractHeader.id == contractEntitlement.chId}" >
<table>
Display TR
Display TD .... END OF DISPLAY TD
Display TR, end of
</table>
</c:if>
</c:forEach>
</forEach ...>