jstl 遍历对象中的列表
jstl loop through a list in an object
我正在构建一个 Spring MVC 网络应用程序,我有一个名为 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 页面中,我想首先循环遍历列表,然后在其中循环遍历列表。我的 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>
我的代码有什么问题?
像这样更改你的第二个循环,因为你在父循环中的变量名称是 nodeRel 而不是 nodeRelInfo
<c:forEach var="node" items="${nodeRel.fromNodeSend}">
<td>${node.sumval}</td>
</c:forEach>
请注意,变量 ${nodeRelInfo}
表示列表,变量 ${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);
}
}
我正在构建一个 Spring MVC 网络应用程序,我有一个名为 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 页面中,我想首先循环遍历列表,然后在其中循环遍历列表。我的 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>
我的代码有什么问题?
像这样更改你的第二个循环,因为你在父循环中的变量名称是 nodeRel 而不是 nodeRelInfo
<c:forEach var="node" items="${nodeRel.fromNodeSend}">
<td>${node.sumval}</td>
</c:forEach>
请注意,变量 ${nodeRelInfo}
表示列表,变量 ${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);
}
}