使用jstl迭代多维数组

时间:2013-10-03 15:00:39

标签: java arrays jsp multidimensional-array jstl

我正在尝试遍历多维数组的字符串并打印其值。但我的所有循环都是多次打印第一行。

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

所以似乎循环(内部和外部两者)迭代正确的次数。但是外循环在每次迭代后都没有指向下一条记录。

2 个答案:

答案 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>
相关问题