【发布时间】:2014-11-26 14:32:11
【问题描述】:
我在将集合迭代到 JSP 页面时遇到以下问题。
这是我的 JSP 的代码:
<%@ page import="com.myproject.xmlns.EDILM.SalReport.SalDettaglio" %>
<%@ page import="com.myproject.xmlns.EDILM.SalReport.RM" %>
<!-- showSalwf.jsp -->
<html>
<head>
<title>Libretti</title>
<link href="css/business_thema.css" rel="stylesheet" type="text/css">
<link href="css/dataTables/datatable.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery-ui.js"></script>
<script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>
<style type="text/css">
#TabellaSalwf2 {
background-color: #99FFFF;
}
</style>
</head>
<body>
<%
out.println("TEST SALWF");
%>
<table id="TabellaSalwf">
<tr><td>-</td></tr>
<%
for (SalDettaglio salDettaglio : (SalDettaglio[]) request.getSession(false).getAttribute("salDettaglio")) {
%>
<tr>
<td><%=salDettaglio.getCodice()%></td>
<td><%=salDettaglio.getStato()%></td>
<td><%=salDettaglio.getDataCreazione()%></td>
<td><%=salDettaglio.getDataRegistrazione()%></td>
<td><%=salDettaglio.getAutoreConvalida()%></td>
<td><%=salDettaglio.getAutoreConvalida()%></td>
<td><%=salDettaglio.getAutoreAcquisizione()%></td>
</tr>
<%}%>
</table>
<br />
<table id="TabellaSalwf2" border="1">
<%
for (SalDettaglio salDettaglio : (SalDettaglio[]) request.getSession(false).getAttribute("salDettaglio")) {
%>
<tr id="salDettaglioRow">
<td><%=salDettaglio.getCodice()%></td>
<td><%=salDettaglio.getStato()%></td>
<td><%=salDettaglio.getDataCreazione()%></td>
<td><%=salDettaglio.getDataRegistrazione()%></td>
<td><%=salDettaglio.getAutoreCreazione()%></td>
<td><%=salDettaglio.getAutoreConvalida()%></td>
<td><%=salDettaglio.getAutoreAcquisizione()%></td>
<td><%=salDettaglio.getTotImponibile().toString()%></td>
<td><%=salDettaglio.getFornitore()%></td>
<td><%=salDettaglio.getRmConRiserva()%></td>
<td><%=salDettaglio.getErrore()%></td>
</tr>
<%
for (RM currentRM : salDettaglio.getRM()) {
}
%>
<%}%>
</table>
</body>
</html>
如您所见,有一个包含 2 个嵌套迭代的表。我对第一次迭代(最外部的)没有问题:此迭代从会话中检索 SalDettaglio 对象的 array 并在此对象上进行迭代,打印每个对象的所有字段SalDettaglio 对象作为一行。
现在每个 SalDettaglio 对象都包含一个 RM 对象数组。
现在我还必须迭代这个数组的对象(在内部迭代中)。
问题是这些行我做不到:
for (RM currentRM : salDettaglio.getRM()) {
// DO SOME OPERATIONS ON EACH OBJECT
}
使用调试器我看到 salDettaglio.getRM() 是 2 个 RM 对象的数组,但在调试器中说 Cannot find local variable for 'currentRM '(必须将当前 RM 对象包含到检索到的数组中)。
为什么它不起作用?我该如何解决这个问题?
Tnx
【问题讨论】:
-
为什么不起作用?错误信息是什么?
-
请显示产生错误的代码示例。您发布的代码没有使用
currentRM -
不要给我任何错误,但在调试器中 currentRM 变量未初始化,在调试器中说“找不到'currentRM'的局部变量”
-
你把断点放在哪里?请将一些代码放入内部循环,然后重试。
-
好的...将一些代码放入内部循环可以正常工作。我认为如果没有在其上声明操作,该对象也已初始化。如果您想写正式回复,我会接受:-)
标签: java arrays jsp arraylist collections