JSTL forEach的问题从arrayList迭代

时间:2010-06-01 05:17:15

标签: java jsp

在我的代码中,我使用了ArrayList,它在数组列表的每个索引中存储数字格式,如'$ 0.00到$ 1,000,000.00'。通过<c:forEach>标记在JSP中迭代, 它的值打印如

$ 0.00到$ 1作为第一个字符串,000作为第二个字符串,000.00作为thrid字符串。 但它必须打印'$ 0.00到$ 1,000,000.00'。

会出现什么问题?

提前致谢

3 个答案:

答案 0 :(得分:4)

您正在迭代数组元素,而不是数组本身。因此,数组“$ 0.00到$ 1,000,000.00”的元素将以逗号位置分割,您可以获得所描述的单个元素。

以下是一个例子:

<%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
 java.util.ArrayList list = new java.util.ArrayList();
 list.add("$0.00 to $1,000,000.00");
 list.add("$1,000,000.00 to $1,000,000,000.00");
 request.setAttribute("list", list);
%>

<h1>Iterating over ArrayList</h1>
<ul>
 <c:forEach items="${list}" var="value">
  <li><c:out value="${value}"/></li>
 </c:forEach>
</ul>

<h1>Iterating over first element of ArrayList</h1>
<ul>
 <c:forEach items="${list[0]}" var="value">
  <li><c:out value="${value}"/></li>
 </c:forEach>
</ul>

答案 1 :(得分:0)

我不确定我是否做对了,但考虑使用JSTL fmt tag library。它的formatNumber tag可以处理货币。那么你的例子将成为:

<c:forEach var="item" items="list">
    <fmt:formatNumber type="currency" currencySymbol="$" value="${item}" currencyCode="USD" />
</c:forEach>

答案 2 :(得分:0)

嘿我有同样的问题,解决方法是修剪for:each标签中的空格。

所以不要这样(注意'&gt;'之前的空格)

c:forEach items="${list}" var="value" > 

c:forEach items="${list}" var="value"> 

//没有空格。

这肯定会起作用..它令人沮丧......但就是这样。