5

1時間のしっかりした調査の後、私はまだこれを行うことができません.

これは私のサーブレットコードです:

package com.fdm.ProjectWeb.RedirectServlets;

import java.awt.List;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.naming.spi.DirStateFactory.Result;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.jstl.sql.ResultSupport;

import com.fdm.ProjectWeb.Controller.ValidateRegisterInputController;
import com.fdm.ProjectWeb.Model.OraclePullListOfUsers;
import com.fdm.ProjectWeb.Model.OracleUserManagement;

public class VerifyRedirect extends HttpServlet {

    private static final long serialVersionUID = 1L;

    public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{
        OraclePullListOfUsers pull = new OraclePullListOfUsers();
        ResultSet rs = pull.unverifiedUsers();
        List list = new List();

    try {
        while (rs.next()){
            list.add(rs.getString(1));
    }
        } catch (SQLException e) {
            e.printStackTrace();
        }


        req.setAttribute("list", list);
        RequestDispatcher rd = req.getRequestDispatcher("./WEB-INF/VerifyUser.jsp");
        rd.forward(req, resp);
    }
}

そして、これは私の.JSPコードです:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
    <title>Verify Users</title>
</head>
<body>

<table>
  <c:forEach items="${list}" var="item">
    <tr>
      <td><c:out value="${item}" /></td>
    </tr>
  </c:forEach>
</table>

    <h2>Please enter the Username of the user you want to verify</h2>
    <form action="loginform" method="POST">
        <label>User To Verify: <input type="text" name="userToVerify" id="userToVerify" /></label><br />
        <input type="submit" value="Submit" name="submit" />
    </form>

</body>

結果セットには、while ループで system.out.println を実行したかのように、確実にデータが含まれており、すべての正しい値が表示されます。

そして、私はこのエラーメッセージを受け取ります:

javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in &lt;forEach&gt;

どんな助けでも大歓迎です!

4

3 に答える 3

9

javax.servlet.jsp.JspTagException: <forEach> で指定された「アイテム」を反復処理する方法がわかりません

この例外は、反復可能なObject<c:forEach items>を参照していない場合に発生します。オブジェクトは、、、または配列のいずれかである必要があります。 明らかに、リスト属性は上記のカテゴリのいずれにも属さないタイプを参照しています。タイプは実際には ですが、そうではありません。IterableMap
Listjava.util.List

インポート ステートメントを確認します。

import java.awt.List;   // Here is the fault

そのはず:

import java.util.List;

Listまた、生の型ではなくジェネリック型を使用する必要があります。変化する:

List list = new List();

に:

List<String> list = new List<String>();

また、メソッドで前処理タスクを行っているようですdoPost()。しないでください。リクエストの後処理にdoPost()使用されます。前処理doget()にはメソッドを使用する必要があります。

すべてのコードdoPost()doGet()メソッドに移動します。

于 2013-08-06T16:25:49.890 に答える
2

変化する:

List list = new List();

に:

List<String> list = new ArrayList<String>();

から

java.util.List;
于 2013-08-06T16:28:12.047 に答える