JSTL遍历数组不显示内容

问题描述

我想在JSTL中使用如下所示的“数组”

for order in orders:
    print(order["Id"])
    order_items = order['Items']['Item']
    if not isinstance(order_items,list):
        order_items = [order_items] # wrap a single item into a list.
    for item in order_items:
        print(item.get("ItemID"))

我还有一个名为<c:set var="hideMe" value="${['A','B','C','D']}" scope="application" /> 的全局VAR,它具有我所在的当前页面名称,因此我可以对其进行检查,作为逻辑的一部分(例如${checkPageName}

其背后的逻辑是,如果存在<c:if test="${checkPageName != hideMe}"> ... </c:if>,那么我将阻止向用户显示特定信息。

有人知道我如何遍历JSTL数组吗?

然后,逻辑应确定如果A,B,C or D不存在,则我们向用户显示特定信息。

我已经尝试过了

A,C or D

有人可以指出正确的方向吗?

更新:我现在自己使用<c:forEach items="${hideMe}"> <c:set var="hide" value="true" /> </c:forEach> <c:if test="${hide != 'true'}"> <div class="showMe"> <h1>Hello Sweetie</h1> </div> </c:if> 修复了该问题,请参见下面的解决方

解决方法

所以我终于弄清楚了

<c:set var="hideMe" value="false" />

<c:forTokens items="A,B,C,D" delims="," var="excludeDisplay">
    <c:if test="${checkPageName == excludeDisplay}">
        <c:set var="hideMe" value="true" />
    </c:if>
</c:forTokens>

<c:if test="${hideMe == 'false}">
    DO SOMETHING
</c:if>

checkPageName是一个全局变量,我正在代码中对其进行检查以验证其是否正确,页面名称...

因此,我将默认VAR设置为hideMe,其值为false,然后使用forTokens为值A,B,C或D创建一个名为excludeDisplay的VAR。

然后我针对我的全局变量检查这些值,如果它们匹配,则使用true值覆盖var hideMe,然后将其用于触发我要显示的内容。如果VAR为false,则显示内容,如果为true,则不执行任何操作。

我希望这对其他人有帮助,如果有人需要更多信息,我很乐意阐述一些晦涩的要点...