首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Servlet/JSP:在mobile类型上找不到属性'id‘

Servlet/JSP:在mobile类型上找不到属性'id‘
EN

Stack Overflow用户
提问于 2013-03-20 14:49:42
回答 2查看 639关注 0票数 0

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

http://localhost:8080/prelim_db_test_19_3_2013/md?q=select * from test.mobile (test是MySQL DB,mobile是表)。

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

代码语言:javascript
运行
复制
ArrayList <mobile> mylist=new ArrayList<mobile> ();
mylist.add(new mobile(rs.getInt("id"),rs.getString("name")));

其中mobile只是一个类,其中idname作为类变量(以及构造函数)

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

代码语言:javascript
运行
复制
request.setAttribute("answer", mylist);
request.getRequestDispatcher("info.jsp").forward(request, response);

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

代码语言:javascript
运行
复制
<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);

注意,当结果打印到控制台时,DB访问本身工作正常(因此Servlet也会使用我的查询字符串进行调用)。下面是我在Eclipse中的项目设置(如果设置方式有任何问题):

我在这里做错什么了?

编辑 mobile.java

代码语言:javascript
运行
复制
public class mobile {
 int id;
 String name;
public mobile(int i,String n) {
    id=i;
    name=n;
}
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-20 14:59:33

在移动类中,您需要为fields.Then添加setter和getter,只有您可以在jsp.I中访问,我认为您没有为它们保留setter和getter。

票数 1
EN

Stack Overflow用户

发布于 2013-03-20 15:51:17

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

见:正如@CaptainGouLash指出的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15526887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档