Spring MVC JSP JSTL 退出每个带有布尔值的循环
Spring MVC JSP JSTL exit for each loop with boolean
我在 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 仍然显示为空 table.
我想为 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>
输出是,如果没有记录,则根本不会创建 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 ...>
编辑:
或者如果你想保持你的 table 结构不变,那么你可以尝试使用 CSS 来隐藏空 cells/columns.
像这样给你的table一个class:
table class="myTable"
然后,在<head> ... </head>
里面使用这个CSS
<style>
.myTable{
empty-cells: hide;
}
</style>
这样玩,我相信你一定能隐藏TD...
编辑 2:
在阅读 OP 的进一步评论后,OP 应该尝试将整个 table 创建的东西放在 if 语句中。当 if 语句为真时,才会创建一个新的 table。它看起来像这样:
<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 ...>
我在 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 仍然显示为空 table.
我想为 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>
输出是,如果没有记录,则根本不会创建 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 ...>
编辑:
或者如果你想保持你的 table 结构不变,那么你可以尝试使用 CSS 来隐藏空 cells/columns.
像这样给你的table一个class:
table class="myTable"
然后,在<head> ... </head>
CSS
<style>
.myTable{
empty-cells: hide;
}
</style>
这样玩,我相信你一定能隐藏TD...
编辑 2:
在阅读 OP 的进一步评论后,OP 应该尝试将整个 table 创建的东西放在 if 语句中。当 if 语句为真时,才会创建一个新的 table。它看起来像这样:
<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 ...>