首页 > 解决方案 > forEach 标签不知道如何遍历属性 JSP

问题描述

我有一个列表,它从数据库返回值,我在一个 servlet 中获取它,我将它分配给一个属性并将它转发到我循环遍历它的 jsp 页面。

我遇到了这个错误:

javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in <forEach>

包含返回列表的方法的类

public class DataModel {

private DataSource dataSource;


public DataModel(DataSource dataSource) {
    this.dataSource = dataSource;
}

public List<Student> getStudents() throws ServletException, SQLException{

    List<Student> students = new ArrayList<Student>();

    Connection connection = null;
    Statement statement = null;
    ResultSet resultSet = null;

    try {
        connection = dataSource.getConnection();

        statement = connection.createStatement();

        String sql = "select * from student order by last_name";

        resultSet = statement.executeQuery(sql);

        while(resultSet.next()) {

            String firstName = resultSet.getString("first_name");
            String lastName = resultSet.getString("last_name");
            String email = resultSet.getString("email");

            Student student = new Student(firstName, lastName, email);
            students.add(student);

        }

        return students;
    }  finally {
        close(connection, statement, resultSet);
    }

}

private void close(Connection connection, Statement statement, ResultSet resultSet) {
    try {
        if(connection != null) {
            connection.close();
        }
        if(statement != null) {
            statement.close();
        }
        if(resultSet != null) {
            resultSet.close();
        }
    } catch (SQLException e) {


    }

}

}

我的类包含我的 servlet:

@WebServlet("/serveLET")
public class serveLET extends HttpServlet {
private static final long serialVersionUID = 1L;

private DataModel dataModel;

@Resource(name="jdbc/web_student_tracker")
private DataSource dataSource;



@Override
public void init() throws ServletException {
    // TODO Auto-generated method stub
    super.init();

    try {
        dataModel = new DataModel(dataSource);
    } catch(Exception e) {

    }
}



protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    try {
        List<Student> students = dataModel.getStudents();
        request.setAttribute("list-students1", students);

        RequestDispatcher dispatcher = request.getRequestDispatcher("/page.jsp");
        dispatcher.forward(request, response);
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

}

JSP文件代码:

 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
 <c:forEach var="tempStudents" items="${list-students1}">
 <tr>
 <td>${tempStudents.firstName }</td>
 <td>${tempStudents.lastName }</td>
 <td>${tempStudents.email }</td>
 </tr>
 </c:forEach>

到目前为止,我一直在花费大量时间来修复此错误,但没有解决方案。任何帮助都会得到帮助。

标签: javasqljspjstl

解决方案


推荐阅读