0

我有 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 中执行已经创建了类似这样的操作,因此它可以使用正确的名称获取变量。

4

2 回答 2

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 -->
于 2013-04-22T14:17:15.970 回答
0

在 JSP-EL+中纯粹是为了数字。尝试这样做:

src="${IMG}${index}"
于 2013-04-22T14:09:12.377 回答