0

1)我在一个模拟 HTTPGET请求的 HTML 页面中有一个链接。(通过手动提供查询字符串。这个页面基本上调用一个 Servlet,在其doGet()方法中完成数据库访问。SQL 查询作为查询的一部分发送细绳。

http://localhost:8080/prelim_db_test_19_3_2013/md?q=select * from test.mobiletest是 MySQL 数据库,mobile是表)。

2) 然后,将结果存储在一个 ArrayList 中。

ArrayList <mobile> mylist=new ArrayList<mobile> ();
mylist.add(new mobile(rs.getInt("id"),rs.getString("name")));

wheremobile只是一个带有idname作为类变量的类(以及一个构造函数)

3)ArrayList然后将其转发到另一个 JSP:

request.setAttribute("answer", mylist);
request.getRequestDispatcher("info.jsp").forward(request, response);

4) 现在在第二个 JSP 中,我简单地使用<c:forEach>来迭代和打印表格内容:

<c:forEach items="${answer}" var="i">
    <tr>
        <td>${i.id}</td>
        <td>${i.name}</td>
    </tr>
</c:forEach>

但是,当我运行该项目时,会引发异常:

javax.el.PropertyNotFoundException: Property 'id' not found on type mobile

在这一行:

request.getRequestDispatcher("info.jsp").forward(request, response);

请注意,当结果打印到控制台时,数据库访问本身可以正常工作(因此 Servlet 也被我的查询字符串调用)。这是我在 Eclipse 中的项目设置(如果设置方式有任何问题):

在此处输入图像描述

我在这里做错了什么?

编辑 mobile.java

public class mobile {
 int id;
 String name;
public mobile(int i,String n) {
    id=i;
    name=n;
}
}
4

2 回答 2

1

在移动类中,您需要为字段放置setter和getter。然后只有您可以在jsp中访问。我认为您没有为它们保留setter和getter。

于 2013-03-20T14:59:33.133 回答
0

正如@PSR 和@CaptainGouLash 正确指出的那样,getter 和setter 需要设置,以便可以通过JSTL 访问类变量。

请参阅: 除此之外正如@CaptainGouLash 指出的那样

于 2013-03-20T15:51:17.680 回答