【问题标题】:Issue with JSPTagException error using foreach comand in JSP在 JSP 中使用 foreach 命令时出现 JSPTagException 错误问题
【发布时间】:2016-01-11 19:44:04
【问题描述】:

我想我有一个关于在 JSP 文件上使用 JSTL ForEach 代码的一般问题。 “items”属性中的输出是否必须定义为数组?

我目前在我的日志中收到一条错误消息,指出它是 “JSPTagException:不知道如何在 ;我知道我在 EFTresults 变量中得到了输出,但显然没有正确使用它。

这是我正在使用的 JSP 和 JAVA 程序:

EFTscreen.jsp:

                    <table>
                        <thead>
                            <tr>
                                <th>Schedule Number</th>
                                <th>Contract Year</th>
                                <th>Creation Date</th>
                                <th>Num of Pay Recs</th>
                                <th>Schedule Total</th>
                                <th>Status</th>
                                <th>Status Date</th>
                                <th>Approval ID</th>
                            </tr>
                        </thead>
                        <tbody>
                           <c:forEach  var="row" items="${EFTresults}">
                             <tr>
                                 <td><c:out value="${row.getSCHEDULE_NUMBER()}" /></td>
                                 <td><c:out value="${row.getEFT_CONTRACT_YEAR()}" /></td>
                                 <td><c:out value="${row.getCREATION_DATE()}"/></td>
                                 <td><c:out value="${row.getNUM_OF_PAY_RECORDS()}"/></td>
                                 <td <c:out value="${row.getTOTAL_AMOUNT()}"/></td>
                                 <td><c:out value="${row.getSTATUS()}"/></td>
                                 <td><c:out value="${row.getSTATUS_DATE()}"/></td>
                                 <td><c:out value="${row.getAPPR_HUD_EMPLOYEE()}"/></td>
                              </tr>
                           </c:forEach>

                        </tbody>
                    </table>

            </article>

这是用于在我的 JAVA servlet 中创建 EFTresults 信息的代码:

EFTscreen.java:

if (wkScheduleNum != 0) 
            {
              Sum_EFTBean EFTresults = EFTQuery.selectSchedule(wkScheduleNum, wkContract) ;
              request.setAttribute("EFTresults", EFTresults);

              if (EFTresults.getSCHEDULE_NUMBER().equals(wkScheduleNum))
              {
                 request.setAttribute("EFTresults", EFTresults);
               }
              else
              {
                 message = ("no EFT schedule Number found - please try again");
                 request.setAttribute("message", message);
              }
            }  

    } 

EFTQuery.java 程序:

    try {
        System.out.println("Before going to connection statement.  Continue");
        connection
                = DriverManager.getConnection(URL, USERNAME, PASSWORD);
        ps = connection.prepareStatement(query);
        ps.setInt(1, wkSchedule);
        ps.setInt(2, wkContract);
        rs = ps.executeQuery();
        System.out.println("Before checking the rs next part.  Continue");

        if (rs.next()) {

            System.out.println("Inside the recordset processing for SQL.  Continue");
            Sum_EFTBean results = new Sum_EFTBean() ;
            results.setSCHEDULE_NUMBER(rs.getInt("SCHEDULE_NUMBER"));
            results.setEFT_CONTRACT_YEAR(rs.getInt("EFT_CONTRACT_YEAR"));
            results.setCREATION_DATE(rs.getString("CREATION_DATE"));
            results.setNUM_OF_PAY_RECORDS(rs.getInt("NUM_OF_PAY_RECORDS"));
            results.setTOTAL_AMOUNT(rs.getDouble("TOTAL_AMOUNT"));
            results.setSTATUS(rs.getString("STATUS"));
            results.setSTATUS_DATE(rs.getString("STATUS_DATE"));
            results.setAPPR_HUD_EMPLOYEE(rs.getString("APPR_HUD_EMPLOYEE"));
            return results ; 
        } 
        else 
        {
            Integer EFTnotfound = 99999;
            Sum_EFTBean results = new Sum_EFTBean() ;
            results.setSCHEDULE_NUMBER(EFTnotfound);
            return results ; 
        }
    } 
    catch (SQLException e) 
    {
        System.err.println(e);

        DBUtil.closeResultSet(rs);
        DBUtil.closePreparedStatement(ps);
        return null;
    } 
    finally 
    {
        DBUtil.closeResultSet(rs);
        DBUtil.closePreparedStatement(ps);
        //            pool.freeConnection(connection);
    }

感谢您的帮助。

【问题讨论】:

    标签: jsp foreach jstl


    【解决方案1】:

    我通常会像这样键入我的迭代变量,然后像这样调用我的 getter:

    <c:forEach var="row" items="${EFTresults}">
    <jsp:useBean id="row" scope="page" type="the.path.to.the.package" />
        <tr>
            <td><%= row.getSCHEDULE_NUMBER %></td>
            ...
        </tr>
    </c:forEach>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-16
      • 2022-01-15
      • 1970-01-01
      • 2017-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多