我有5个变量需要在打开的foreach中使用,所以我将每个变量命名为IMG1 IMG2 IMG3 IMG4 IMG5。我想知道如何像这样调用图像的src
src="${IMG + index of the foreach}"
因此它将foreach称为新图像。
编辑:
我有这五个变量
<c:set var="imgPN1" value="23421E1" />
<c:set var="imgPN2" value="32543QS" />
<c:set var="imgPN3" value="23945ZS" />
<c:set var="imgPN4" value="23421E0" />
<c:set var="imgPN5" value="34352WS" />
并且在foreach内部我需要将每个变量放在图像src中,所以问题是我计算在foreach中使用另一个foreach,因为将生成25 img而不是5,所以我需要什么,正在使用varstatus或一些索引,能够在foreach内部已经创建了这样的东西 所以它用正确的名称来获取变量。
答案 0 :(得分:1)
我知道您出于某种原因准备了以下图像:
request.setAttribute("IMG1", img1);
request.setAttribute("IMG2", img2);
request.setAttribute("IMG3", img3);
request.setAttribute("IMG4", img4);
request.setAttribute("IMG5", img5);
要具体回答您的问题,首先需要创建另一个变量,该变量用<c:set>
表示范围属性名称,然后您可以将其用作所需范围映射的键,例如${requestScope}
请求属性:
<c:forEach begin="1" end="5" varStatus="loop">
<c:set var="imgId" value="IMG${loop.index}" />
<img src="${requestScope[imgId]}" />
</c:forEach>
然而,这是一种相当糟糕的做法。这是一种相当笨拙和不合逻辑的方法。在数组或集合中准备那些密切相关的变量会更有意义。
String[] images = new String[] { img1, img2, img3, img4, img5 };
request.setAttribute("images", images);
以便您可以按如下方式访问它:
<c:forEach items="${images}" var="image">
<img src="${image}" />
</c:forEach>
您甚至可以在不在循环内时直接访问特定索引处的项目:
<img src="${images[2]}" /> <!-- returns img3 -->
答案 1 :(得分:0)
在JSP-EL +
中纯粹是为了数字。试着这样做:
src="${IMG}${index}"