在jstl中根据索引获取arraylist的元素

时间:2014-06-03 16:05:49

标签: java jstl

这可能是一件相对简单的事情,但由于某种原因,我似乎无法做到正确。

如何根据索引从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>

3 个答案:

答案 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]}" />
相关问题