Java 通过循环在JSP/EL中连接

Java 通过循环在JSP/EL中连接,java,jsp,el,Java,Jsp,El,所以我试着做一些可能不可能的事情。我想重复以下内容: i被设置为迭代器 <c:forEach begin="1" end="${total}" var="i"> <td>${prod${i}.name}</td> </c:forEach> ${prod${i}.name} 这显然不起作用,但我认为它描述了我试图做的事情 我想将一个变量连接到另一个变量,其中我就是要连接到prod.name的变量。通常产品名称类似于${prod1.name

所以我试着做一些可能不可能的事情。我想重复以下内容:

i被设置为迭代器

<c:forEach begin="1" end="${total}" var="i">
   <td>${prod${i}.name}</td>
</c:forEach>

${prod${i}.name}
这显然不起作用,但我认为它描述了我试图做的事情

我想将一个变量连接到另一个变量,其中我就是要连接到prod.name的变量。通常产品名称类似于${prod1.name}。所以我想在循环中使用迭代器替换1

我对JSP和EL类型的开发人员非常陌生。所以如果我做的完全错误,请告诉我


谢谢

办不到。我的建议是重新构造您的代码,使
prod
成为一个数组或集合,然后使用c:forEach对其元素进行迭代。

处理这类事情最简单(也是最常见)的方法是将您的产品组放在一个集合中:例如,您有一个传递给JSP的产品对象列表,然后你就这么做了

<c:forEach items="${products}" var="product">
   <td>${product.name}</td>
</c:forEach>

${product.name}

如果事先知道对象的范围,则可以通过使用大括号符号组合键并直接从范围映射中抓取对象来解决此问题。下面是一个示例,假设从请求范围获得
${prod1}
等:

<c:forEach begin="1" end="${total}" var="i">
   <c:set var="prod" value="prod${i}" />
   <td>${requestScope[prod].name}</td>
</c:forEach>

${requestScope[prod].name}
如果它在会话范围内,请改用
${sessionScope[prod].name}
,对于应用程序范围,请改用
${applicationScope[prod].name}

无论如何,这不是推荐的方法。您应该在范围中放置一个
列表
,并按照JacobM演示的方式对其进行迭代

另见:

谢谢,我想这是我需要做的汉克斯,我想这是我需要做的