我对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变量传递给包含文件的范围?
答案 0 :(得分:1)
在<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>
和request
对象传递给它时,response
完全可以解决这个问题,并且JSP ${EL}
语法可以检索包含的值${loopIndex}
的资源也可以使用。
但是,我不确定是否已编写<sling:include>
自定义标记以支持所有这些。如果它不起作用,您需要对其进行修改,以便在与resource
相同的行中占用另一个属性,以便传递varStatus
值。
<sling:include resource="${tabResource}" loopIndex="${varStatus}" resourceType=... />