2

我浏览了许多有关此异常的链接。不知道是action类有问题还是jsp有问题。

我的 DAO 是:

         {
            ReleaseData releaseData = new ReleaseData();
            releaseData.setRollno(resultSet.getInt("rollno"));
            releaseData.setName(resultSet.getString("name"));
            releaseData.setAge(resultSet.getInt("age"));
            myDataList.add(releaseData);
            System.out.println("the List has---"+myDataList);
        }

我的 Servlet 是:

            public class DisplayServlet extends HttpServlet
          {
                public void doGet(HttpServletRequest request ,HttpServletResponse  response) throws ServletException,IOException
{
    List<ReleaseData> myDataList = new ReleaseDataDAO().getReleaseData();
    request.setAttribute("myDataList", myDataList);
    request.getRequestDispatcher("/showData.jsp").forward(request, response);
}
}

这是我的jsp:

<c:forEach items="$(myDataList)" var="data">
             <tr>
               <td>${data.rollno}</td>
                 <td>${data.name}</td>
                <td>${data.age}</td>

              </tr>
             </c:forEach>
4

1 回答 1

3

嗯,我刚刚注意到,您使用的是,$()而不是${}jsp 不是 jQuery :P 这$(myDataList)不是被解释为 EL 表达式并成为字符串,而是这样做:${myDataList}

还:

您需要创建 getter 和 setter 方法,在您提供的代码中,我可以看到一个 set 方法来 rollno 但没有 get 方法,它们也必须是公共的

public class ReleaseData{
    private int rollno = 0;
    private String name = "";
    private int age = 0;

    public int getRollno(){ return rollno; }
    public void setRollno(int rollno){ this.rollno = rollno; }

    public int getAge(){ return age; }
    public void setAge(int age){ this.age= age; }

    public String getName(){ return name; }
    public void setName(String name ){ this.name = name; }

}

此外,逃避任何可以由人类输入的数据总是很好的。

<c:forEach items="${myDataList}" var="data">
 <tr>
   <td><c:out value="${data.rollno}" /></td>
     <td><c:out value="${data.name}" /></td>
    <td><c:out value="${data.age}" /></td>

  </tr>
 </c:forEach>
于 2012-12-05T19:53:06.843 回答