2013-08-06 135 views
2

经过一小时的扎实研究,我仍然无法做到这一点。如何在.JSP文件中显示列表?

这是我的servlet代码:

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> 

其结果必然设置中有数据,就好像我的System.out.println在while循环显示所有正确的值。

我收到此错误信息:

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

任何帮助,将不胜感激!

+0

的可能的复制[如何显示在表格的形式列出内容在JSP文件?](https://stackoverflow.com/问题/ 8646347/how-to-display-list-contents-in -table-format-in-a-jsp-file) –

回答

8

javax.servlet.jsp.JspTagException:不知道如何在<的forEach >

当你<c:forEach items>并非指一个对象此异常发生遍历提供“项目” ,这可以迭代。 对象应该是IterableMap阵列
很明显,您的列表属性是指不属于上述任何类别的类型。虽然类型实际上是List,但不是java.util.List

检查import语句:

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() is used for post-processing a request。您应该使用doget()方法预处理

doPost()中的所有代码移至doGet()方法。

+0

我第一次读到关于post/pre-processing的东西! – RealHowTo

+0

非常感谢(和其他人)。特别是对于doGet提示:) – DeaIss

+1

@oOTesterOo。欢迎您:) –

2

变化:

List list = new List(); 

要:

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

java.util.List; 
1

尝试实例列表如下:

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

或者如果它不能帮助也许提供列表作为数组如:

req.setAttribute("list", list.toArray());