我在 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 仍会显示空表。
我想使用 boolean 值为 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>
输出是,如果没有记录,则根本不创建表,任何帮助将不胜感激。
最佳答案
首先,我认为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 ...>
关于java - Spring MVC JSP JSTL 退出每个带有 boolean 值的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44148379/