1)我在HTML页面中有一个模拟HTTP GET
请求的链接。(通过手动提供查询字符串。这个页面基本上调用一个Servlet,在其中{{1}完成数据库访问SQL查询作为查询字符串的一部分发送。
doGet()
(http://localhost:8080/prelim_db_test_19_3_2013/md?q=select * from test.mobile
是MySQL数据库,test
是表格。
2)然后,结果存储在ArrayList中。
mobile
其中ArrayList <mobile> mylist=new ArrayList<mobile> ();
mylist.add(new mobile(rs.getInt("id"),rs.getString("name")));
只是一个以mobile
和id
作为类变量的类(以及构造函数)
3)然后将name
转发到另一个JSP:
ArrayList
4)现在在第二个JSP中,我简单地使用request.setAttribute("answer", mylist);
request.getRequestDispatcher("info.jsp").forward(request, response);
来迭代并打印表内容:
<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
请注意,当结果打印到控制台时,DB访问本身可以正常工作(因此使用我的查询字符串也会调用Servlet)。这是我在Eclipse中的项目设置(如果它的设置方式有任何问题):
我在这里做错了什么?
编辑 request.getRequestDispatcher("info.jsp").forward(request, response);
:
mobile.java
答案 0 :(得分:1)
在移动课程中,你需要为字段添加setter和getter。然后只有你可以在jsp中访问。我认为你没有为他们保留setter和getter。
答案 1 :(得分:0)
正如@PSR和@CaptainGouLash指出的那样,需要设置getter和setter,以便可以通过JSTL访问类变量。
请参阅: this除this as pointed out by @CaptainGouLash之外的{{3}}