Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to display a list in a .JSP file?

After an hour of solid research I still can't do this.

This is my Servlet code:

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);
    }
}

And this is my .JSP code:

<%@ 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>

The Result Set definitely has data in it as if I system.out.println in the while loop it shows all the right values.

And I get this error message:

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

Any help would be appreciated!

like image 812
DeaIss Avatar asked Aug 06 '13 16:08

DeaIss


People also ask

How do I view a JSP file?

Right-click the index. jsp file; click Run As > Run on Server. The storefront page is displayed in the Web browser. Note: If prompted to select a server, select Choose an existing server and click Finish.

How do I open a JSP file in Notepad?

Make sure that the path of the file is tomacat9. 0 → webapps → root → your file with jsp extension. 2. After saving, your file will look like this in the notepad.

Can we include html file in JSP?

The include directive is used to include the contents of any resource it may be jsp file, html file or text file.


1 Answers

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

This exception occur when your <c:forEach items> does not refer to an Object, that can be iterated upon. The Object should either be Iterable, a Map, or an array.
So clearly, your list attribute refers to the type which does not come under any of the above category. Though the type is actually a List, but not java.util.List.

Check your import statement:

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

It should be:

import java.util.List;

Also, you should use generic type List instead of raw type. Change:

List list = new List();

to:

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

Also, it seems like you are doing the pre-processing task in doPost() method. Don't. doPost() is used for post-processing a request. You should use doget() method for pre-processing.

Move all your code in doPost() to doGet() method.

like image 73
Rohit Jain Avatar answered Oct 25 '22 18:10

Rohit Jain