这是Data Access对象类的代码
pojo类的 public List<UserPojo> viewAllUser(int offset, int noOfRecords) { String query ="select SQL_CALC_FOUND_ROWS fname,Id,mname,lname,gender,State from registration limit "+offset+","+noOfRecords; List<UserPojo> list = new ArrayList<UserPojo>(); UserPojo User = null; try { connection = getConnection(); stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery(query); while (rs.next()) { User = new UserPojo(); User.SetFname(rs.getString("fname")); User.Setid(rs.getInt(2)); User.SetMname(rs.getString("mname")); User.SetLname(rs.getString("lname")); User.SetGender(rs.getString("gender")); User.Setstate(rs.getString("State")); list.add(Fighter); } rs.close(); rs = stmt.executeQuery("SELECT FOUND_ROWS()"); if(rs.next()) this.noOfRecords = rs.getInt(1); } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); }finally { try { if(stmt != null) stmt.close(); if(connection != null) connection.close(); } catch (SQLException e) { e.printStackTrace(); } } return list; }
代码是
public String getFname()
{
return fname;
}
public void SetFname(String fname)
{
this.fname = fname;
}
public String getMname()
{
return mname;
}
public void SetMname(String mname)
{
this.mname = mname;
}
public String getLname()
{
return lname;
}
public void SetLname(String lname)
{
this.lname = lname;
}
public String getGender()
{
return gender;
}
public void SetGender(String Per)
{
this.gender = Per;
}
public String getstate()
{
return state;
}
public void Setstate(String state)
{
this.state = state;
}
public int getid()
{
return idm;
}
public void Setid(int m)
{
this.idm=m;
System.out.print(m);
}
}`
Servlet包含以下代码
int page = 1;
int recordsPerPage = 5;
if(request.getParameter("page") != null)
page = Integer.parseInt(request.getParameter("page"));
UserDAO dao = new UserDAO();
List<UserPojo> list = dao.viewAllUser((page-1)*recordsPerPage,recordsPerPage);
int noOfRecords = dao.getNoOfRecords();
int noOfPages = (int) Math.ceil(noOfRecords * 1.0 / recordsPerPage);
request.setAttribute("User", list);
request.setAttribute("noOfPages", noOfPages);
request.setAttribute("currentPage", page);
RequestDispatcher view= request.getRequestDispatcher("DisplayUser.jsp");
view.forward(request, response);
Jsp页面包含代码
<td>${User.gender}</td>
<td>${User.fname} ${User.mname} ${User.lname}</td>
<td>${User.state}</td>
<td>${User.idm}</td>
异常的堆栈跟踪是
type Exception report
消息javax.el.PropertyNotFoundException:在类型FighterPoso上找不到属性'idm'
description服务器遇到内部错误,导致无法完成此请求 .
例外
org.apache.jasper.JasperException:javax.el.PropertyNotFoundException:在类型FighterPoso上找不到属性'idm'org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:502)org.apache.jasper.servlet.JspServletWrapper .service(JspServletWrapper.java:430)org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)javax.servlet.http .HttpServlet.service(HttpServlet.java:717)FighterServlet.doGet(FighterServlet.java:30)javax.servlet.http.HttpServlet.service(HttpServlet.java:617)javax.servlet.http.HttpServlet.service(HttpServlet.java) :717)根本原因
javax.el.PropertyNotFoundException:在类型FighterPoso上找不到属性'idm'javax.el.BeanELResolver $ BeanProperties.get(BeanELResolver.java:214)
无法理解为什么会发生这种异常 . 因为从jsp页面中删除$ 时可以轻松获取所有其他字段 . 有一点我想提一下,id字段是具有自动增量功能的数据库中的主键 .
2 回答
代替 :
使用:
您尚未在用户bean中公开
getId
方法 .另外请确保遵循java bean命名方案 . 所以如果你说id为field,那么getter / setter应该是这样的:
没有任何User.getIdm()方法 . Getter / Setter必须匹配pojo的属性 .
还尝试以小写形式启动方法,你的getter是getXXX,而你的setter是SetXXX,这很难看 .