通过循环在JSP / EL中连接

时间:2010-07-09 18:47:39

标签: java jsp el

所以我试图做一些可能无法做到的事情。我想迭代这样的事情:

我被设置为迭代器

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

这显然不起作用,但我认为它描绘了我想要做的事情。

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

我是JSP和EL类型开发人员的新手。因此,如果我完全错误,请告诉我。

由于

3 个答案:

答案 0 :(得分:1)

无法完成。我的建议是重构代码,以便prod是一个数组或集合,然后使用c:forEach迭代它的元素。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

如果预先知道对象的范围,那么您可以通过使用<c:set>组合键并使用括号表示法直接从范围映射中获取对象来解决此问题。这是一个假设{<1}}等来自请求范围的示例:

${prod1}

如果它位于会话范围内,请使用<c:forEach begin="1" end="${total}" var="i"> <c:set var="prod" value="prod${i}" /> <td>${requestScope[prod].name}</td> </c:forEach> ,而使用应用范围,请改用${sessionScope[prod].name}

无论如何,这不是推荐的方法。您应该在范围中放置${applicationScope[prod].name}并按照JacobM所示的方式迭代它。

另见: