0

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

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

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

4

2 回答 2

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 样式应用到列时更加灵活。

于 2013-10-03T15:37:28.840 回答
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>
于 2016-12-06T15:23:28.287 回答