Getting Property not found从Pojo类访问jsp页面上的数据时出现异常



这是数据访问对象类的代码

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; }
pojo类的代码是

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.jaster.JasperException:javax.el.PropertyNotFoundException:在类型FighterPoso上找不到属性"idm"org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletsWrapper.java:502)org.apache.jasper.servlet.JspServletWrapper.service(JspServletsWrapper.java:430)org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)javax.servlet.httpHttpServlet.service(HttpServlet.java:717)FighterServlet.doGet(FighterServlet.java:30)javax.servlet.httpHttpServlet.service(HttpServlet.java:617)javax.servlet.httpHttpServlet.service(HttpServlet.java:717)根本原因

javax.el.PropertyNotFoundException:在类型FighterPoso上找不到属性"idm"javax.el.BeaneLesolver$BeanProperties.get(BeaneLesolver.java:214)

无法理解发生此异常的原因。因为当从jsp页面中删除${User.idm}时,所有其他字段都很容易被提取。我想提到的一件事是,id字段是具有自动增量功能的数据库中的主键。

代替:

<td>${User.idm}</td>

用途:

<td>${User.id}</td>

您还没有在用户bean中公开getId方法。

此外,请确保您遵循javabean命名方案。所以,如果你有say id作为字段,那么getter/setter应该是这样的:

.. getId() {
return ...
}
.. setId(..) {
...
}

没有任何User.getIdm()方法。Getter/Setter必须与pojo的属性匹配。

还要试着用小写字母启动方法,getter是getXXX,setter是SetXXX,这太难看了。

最新更新