Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring MVC JSP JSTL为每个循环退出布尔值_Java_Spring_Jsp_Spring Mvc_Jstl - Fatal编程技术网

Java Spring MVC JSP JSTL为每个循环退出布尔值

Java Spring MVC JSP JSTL为每个循环退出布尔值,java,spring,jsp,spring-mvc,jstl,Java,Spring,Jsp,Spring Mvc,Jstl,我在jsp中使用了两个模型: <c:forEach items="${ch}" var="contractHeader"> Display data ... <table> Display TD <c:forEach items="${ce}" var="contractEntitlement"> <c:if test="${contractHeader.id == contractEntitleme

我在jsp中使用了两个模型:

<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等于ContractRightage中的chid时,才会显示记录。这是可行的,但问题是如果没有合同授权的记录,TD仍然显示为空表

我想为TD添加一个额外的条件,使用boolean执行如下操作:

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之外。您的TD在TR之外,这是错误的。除此之外,我尝试的解决方法是尝试将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

像这样到处玩,我相信你将能够隐藏TD

编辑2:

在阅读OP的进一步注释后,OP应该尝试将整个表创建内容放入if语句中。当if语句为true时,只会创建一个新表。它看起来像这样:

table class="myTable"
<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 ...>

我尝试过这个,但有时每个合同有超过1条记录。如果是这样的话,那么每条记录将有一个表。我的错误。对不起,应该不是。我想在没有记录时隐藏表头/整个表。我想我会尝试在控制器中创建一个带有ID的新列表,该ID具有记录,并在jsp中传递它,然后使用该新列表隐藏并显示该表。我在另一篇文章中读到,您不能在jsp jstl中退出循环。谢谢你的帮助和时间
<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 ...>