从 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(..) {
     ...
 }