在 html 中输出 var Status 的值

output the value of var Status in html

我对 jsp 没有太多经验,所以这看起来像是一个愚蠢的问题,但是如何在 forEach 循环中输出 varStatus 的值?

这是循环:

<ul class="local-navigation">
    <c:forEach var="tabResource" items="${viewModel.navTabResources}" varStatus="myIndex">
        <sling:include resource="${ tabResource }" resourceType="navigation/tab/render" />
    </c:forEach>
</ul>

在包含的文件中,我这样调用 varStatus="myIndex":

<a href="#" data-target=".navList-${myIndex.count}" <c:choose>

但是当我构建时,呈现的 html 没有显示来自 varStatus 变量的值(像这样):

<a href="#" data-visibility-target=".navList-">...</a>

我在这里做错了什么?或者更好的问题:如何将 varStatus 变量传递到包含文件的范围?

就在您的 <include> 之前,将您的 varStatus 值设置到 request 范围内,以使其对包含的 JSP 资源可用。

<c:forEach var="tabResource" items="${viewModel.navTabResources}" varStatus="myIndex">
   <c:set var="loopIndex" value="${myIndex}" scope="request" />
   <sling:include resource="${tabResource}" resourceType="navigation/tab/render" />
</c:forEach>

现在用 <jsp:include> 可以完美解决,因为 requestresponse 对象被传递给它,JSP ${EL} 语法使用 ${loopIndex} 检索包含的资源中的值也可以。

但是,我不确定是否编写了 <sling:include> 自定义标签来支持所有这些。如果它不起作用,您需要修改它以在与 resource 相同的行上占用另一个属性,以传递 varStatus 值。

<sling:include resource="${tabResource}" loopIndex="${varStatus}" resourceType=... />