jstl遍历对象中的列表

时间:2016-09-07 09:00:46

标签: java spring jsp spring-mvc jstl

我正在构建一个Spring MVC Web应用程序,我有一个名为NodeRel的对象,其定义如下:

public class NodeRel {
    private String fromNodeId;
    private String toNodeId;
    private String fromNodeName;
    private String toNodeName;
    private List<QuotaValueOnTime> fromNodeSend;
    private List<QuotaValueOnTime> toNodeSend;

    //getters and setters omitted 
}

在服务器端代码中,我获得了NodeRels列表并将其绑定到模型。在jsp页面中,我想首先遍历List然后在其中,我想循环通过List。我的jsp代码:

<div class="table-responsive">
<table class="table table-striped table-bordered table-hover">
    <thead>
        <tr>
            <th class="center">Count</th>
            <th>relation</th>
            <th colspan='25'>Detail</th>
        </tr>
    </thead>

    <tbody>
        <c:forEach var="nodeRel" items="${nodeRelInfo}" varStatus="stc">
            <tr>
                <td rowspan="3">${stc.count}</td>
                <td rowspan="3">${nodeRel.fromNodeName} --> ${nodeRel.toNodeName}</td>
                <td>\</td>
                <c:forEach var="x" begin="0" end="23" step="1"> 
                            <td>${x}</td>
                </c:forEach>
            </tr>
            <tr>
                <td>Send_A</td>
                <c:forEach var="node" items="${nodeRelInfo.fromNodeSend}"> 
                            <td>${node.sumval}</td>
                </c:forEach>

            </tr>
            <tr>
                <td>Send_B</td>
                <c:forEach var="x" begin="0" end="23" step="1"> 
                            <td>${x}</td>
                </c:forEach>
            </tr>
        </c:forEach>
    </tbody>
</table>
</div>

我的代码不起作用,我得到了java.lang.NumberFormatException:对于输入字符串:第二个循环附近的“fromNodeSend”:

<c:forEach var="node" items="${nodeRelInfo.fromNodeSend}"> 
    <td>${node.sumval}</td>
</c:forEach>

我的代码出了什么问题?

2 个答案:

答案 0 :(得分:2)

请注意,变量${nodeRelInfo}代表List,变量${nodeRel}代表您使用的每个项目。

因此,您要在第二个循环中循环的项目为${nodeRelInfo.fromNodeSend}。更改变量循环的第二个名称:

<c:forEach var="node" items="${nodeRel.fromNodeSend}"> 
    <td>${node.sumval}</td>
</c:forEach>

它的工作原理与Java for-each循环相同。

for (List nodeRel: nodeRelInfo) {
    // bla blaa
    for (String node: nodeRel.fromNodeSend()) {
        System.out.println(node);
    }
}

答案 1 :(得分:0)

更改你的第二个循环,因为你的父循环中的变量名是nodeRel而不是nodeRelInfo

<c:forEach var="node" items="${nodeRel.fromNodeSend}"> 
    <td>${node.sumval}</td>
</c:forEach>