从 Pojo class 访问 jsp 页面上的数据时获取 属性 未找到异常
Getting Property not found Exception on accessing data on jsp page from Pojo class
这是数据访问对象的代码class
public List<UserPojo> viewAllUser(int offset, int noOfRecords)
{<br>
字符串查询="select SQL_CALC_FOUND_ROWS fname,Id,mname,lname,gender,State from registration limit "+offset+","+noOfRecords;
List<UserPojo> list = new ArrayList<UserPojo>();
UserPojo 用户 = 空;
试试{<br>
连接 = getConnection();
stmt = connection.createStatement();
结果集 rs = stmt.executeQuery(查询);
而 (rs.next())
{
用户 = 新的 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(战士);
}
rs.close();
rs = stmt.executeQuery("SELECT FOUND_ROWS()");
如果(rs.next())
this.noOfRecords = rs.getInt(1);
} 赶上(SQLException e)
{
e.printStackTrace();
} 赶上(ClassNotFoundException e)
{
e.printStackTrace();
}最后
{
尝试 {
如果(stmt!=空)
stmt.close();
如果(连接!=空)
connection.close();
} 赶上(SQLException e)
{
e.printStackTrace();
}
}
return列表;
}
pojo class 的代码是
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:属性 'idm' 在 FighterPoso 类型上找不到
说明服务器遇到内部错误,无法完成此请求。
异常
org.apache.jasper.JasperException: javax.el.PropertyNotFoundException: 属性 'idm' 未在 FighterPoso 类型上找到
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: 属性 'idm' 未在 FighterPoso 类型上找到
javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:214)
无法理解为什么会出现此异常。因为当从 jsp 页面中删除 ${User.idm} 时,所有其他字段都可以轻松获取。
有一件事我想提一下,id 字段是数据库中具有自动增量功能的主键。
没有任何 User.getIdm() 方法。 Getter/Setter 必须匹配 pojo 的属性。
也尝试以小写开头的方法,你的 getter 是 getXXX,你的 setter 是 SetXXX,太丑了。
而不是:
<td>${User.idm}</td>
使用:
<td>${User.id}</td>
您还没有在您的用户 bean 中公开 getId
方法。
另外请确保您遵循 java bean 命名方案。所以如果你说 id 作为字段那么 getter/setter 应该是这样的:
.. getId() {
return ...
}
.. setId(..) {
...
}
这是数据访问对象的代码class
public List<UserPojo> viewAllUser(int offset, int noOfRecords)
{<br>
字符串查询="select SQL_CALC_FOUND_ROWS fname,Id,mname,lname,gender,State from registration limit "+offset+","+noOfRecords;
List<UserPojo> list = new ArrayList<UserPojo>();
UserPojo 用户 = 空;
试试{<br>
连接 = getConnection();
stmt = connection.createStatement();
结果集 rs = stmt.executeQuery(查询);
而 (rs.next())
{
用户 = 新的 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(战士);
}
rs.close();
rs = stmt.executeQuery("SELECT FOUND_ROWS()");
如果(rs.next())
this.noOfRecords = rs.getInt(1);
} 赶上(SQLException e)
{
e.printStackTrace();
} 赶上(ClassNotFoundException e)
{
e.printStackTrace();
}最后
{
尝试 {
如果(stmt!=空)
stmt.close();
如果(连接!=空)
connection.close();
} 赶上(SQLException e)
{
e.printStackTrace();
}
}
return列表;
}
pojo class 的代码是
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:属性 'idm' 在 FighterPoso 类型上找不到
说明服务器遇到内部错误,无法完成此请求。
异常
org.apache.jasper.JasperException: javax.el.PropertyNotFoundException: 属性 'idm' 未在 FighterPoso 类型上找到 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: 属性 'idm' 未在 FighterPoso 类型上找到 javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:214)
无法理解为什么会出现此异常。因为当从 jsp 页面中删除 ${User.idm} 时,所有其他字段都可以轻松获取。 有一件事我想提一下,id 字段是数据库中具有自动增量功能的主键。
没有任何 User.getIdm() 方法。 Getter/Setter 必须匹配 pojo 的属性。
也尝试以小写开头的方法,你的 getter 是 getXXX,你的 setter 是 SetXXX,太丑了。
而不是:
<td>${User.idm}</td>
使用:
<td>${User.id}</td>
您还没有在您的用户 bean 中公开 getId
方法。
另外请确保您遵循 java bean 命名方案。所以如果你说 id 作为字段那么 getter/setter 应该是这样的:
.. getId() {
return ...
}
.. setId(..) {
...
}