使用布尔值的每个循环的Spring MVC JSP JSTL出口

时间:2017-05-24 03:20:18

标签: java spring jsp spring-mvc jstl

我在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>

输出是,如果没有记录根本不创建表,任何帮助都表示赞赏。

1 个答案:

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