我正在尝试遍历多维数组的字符串并打印其值。但我的所有循环都是多次打印第一行。
String[][] myArray;
myArray中的值:
Tom Decker Male 20
Julie Hanson Female 25
Toby Jackson Male 30
循环:
<c:forEach var="rowData" items="${myArray}">
<tr>
<c:forEach var="cellData" items="${rowData}" >
<td><c:out value="${cellData}"></c:out></td>
</c:forEach>
</tr>
</c:forEach>
它不是打印所有数据,而是打印第一条记录3次,如下所示。
Tom Decker Male 20
Tom Decker Male 20
Tom Decker Male 20
所以似乎循环(内部和外部两者)迭代正确的次数。但是外循环在每次迭代后都没有指向下一条记录。
答案 0 :(得分:2)
您是否考虑过使用数组/对象列表而不是多维数组?类似的东西:
class Person {
private String firstName;
private String lastName;
private String sex; // or enum, whatever
private int age;
// public getters/settters go here
}
然后你的jstl会更像这样:
<c:forEach var="rowData" items="${myArray}">
<tr>
<td><c:out value="${rowData.firstName}"></c:out></td>
<td><c:out value="${rowData.lastName}"></c:out></td>
<td><c:out value="${rowData.sex}"></c:out></td>
<td><c:out value="${rowData.age}"></c:out></td>
<tr>
</c:forEach>
如果您正在使用CSS样式,那么这将为您提供更多的灵活性。
答案 1 :(得分:0)
使用forach标签和内部循环运行嵌套循环,在循环上使用计数器并在循环索引的帮助下渲染列。
语法代码:
<c:forEach var="rowData" items="${myArray}">
<tr>
<c:forEach var="cellData" varStatus="loop" items="${rowData}" >
<td><c:out value="${cellData[loop.index]}"></c:out></td>
</c:forEach>
</tr>
</c:forEach>