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 ...>