所以我试图做一些可能无法做到的事情。我想迭代这样的事情:
我被设置为迭代器
<c:forEach begin="1" end="${total}" var="i">
<td>${prod${i}.name}</td>
</c:forEach>
这显然不起作用,但我认为它描绘了我想要做的事情。
我想将变量连接到另一个变量,其中我想要连接到prod.name。通常,产品名称类似于$ {prod1.name}。所以我想在循环中用迭代器替换1。
我是JSP和EL类型开发人员的新手。因此,如果我完全错误,请告诉我。
由于
答案 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所示的方式迭代它。