这可能是一件相对简单的事情,但由于某种原因,我似乎无法做到正确。
如何根据索引从jstl中的arrayList获取元素。
在纯java中,假设我有这个反对者
ArrayList< String > colors = new ArrayList< String >();
colors.add("red");
colors.add("orange");
colors.add("yellow");
colors.add("green");
colors.add("blue");
如果我System.out.println(colors.get(1));
我从arrayList获得第一种颜色
我提供的索引恰好是red
。
想知道如何在jstl中实现这一目标。我在jstl中使用了foreach标签但是没有完全正确。
<c:forEach items="colors" var="element">
<c:out value="${element.get(1)}"/>
</c:forEach>
答案 0 :(得分:18)
当您说colors.get(1);
或${element[1]}
时,它实际引用了列表中的单个条目。但是当你使用c:forEach
迭代循环时。
这取决于你想要达到的目标。如果您只想要第N个元素,请尝试
<c:out value="${colors[1]}"/> // This prints the second element of the list
但是你想打印你应该去的整个元素,如
<c:forEach items="${colors}" var="element">
<c:out value="${element}"/>
</c:forEach>
另请注意,如果您写得像<c:forEach items="colors" var="element">
那样,它会将值视为"colors"
。因此,如果它是变量名称,您需要在${}
中像${colors}
那样提供它,如上例所示。
答案 1 :(得分:2)
这应该有效:
<c:out value="${colors[0]}"/>
它会打印出你的“红色”。
但是,如果您要打印列表的所有值,可以像这样使用foreach
:
<c:forEach items="colors" var="element">
<c:out value="${element}"/>
</c:forEach>
此代码将遍历您的列表colors
,并将此列表的每个元素设置为名为element
的变量。因此,element
的类型与参数化列表的类型相同(此处为String
)。因此,您无法在get(1)
上致电String
,因为它不存在。
因此,您可以直接调用<c:out value="${element}"/>
,它会调用当前元素的toString()
方法。
答案 2 :(得分:0)
您可以按如下方式使用基于阵列的访问:
<c:out value="${colors[0]}" />