【问题标题】:Why I can't iterate on the object of this array in a nested iteration?为什么我不能在嵌套迭代中迭代这个数组的对象?
【发布时间】: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


【解决方案1】:

您的内部循环中没有代码。因此,您不能将断点放置在肯定会定义 currentRM 的任何地方。其实整个循环优化出来也是可以想象的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-30
    • 2021-05-19
    • 2023-01-30
    相关资源
    最近更新 更多