【问题标题】:Property 'EmployeeID' not found on type bean.Employee在 bean.Employee 类型上找不到属性“EmployeeID”
【发布时间】:2017-05-28 13:28:02
【问题描述】:

我正在尝试在一个表中显示所有员工列表,并在同一个表中删除它。但是这个错误一直困扰着我。可能是什么原因?

May 28, 2017 9:25:27 PM 
org.apache.catalina.core.ApplicationDispatcher invoke
SEVERE: Servlet.service() for servlet jsp threw exception
javax.el.PropertyNotFoundException: Property 'EmployeeID' not found on type bean.Employee

May 28, 2017 9:25:27 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [DisplayAllEmp] in context with path [/ELMS] threw exception [An exception occurred processing JSP page /elms/elms_skms/DeleteEmployeeAcc.jsp at line 55

52:                                     <tbody>
53:                                         <c:forEach items="${employee}" var="emp">
54:                                             <tr>
55:                                                 <td><c:out value="${emp.EmployeeID}" /></td>
56:                                                 <td><c:out value="${emp.EmployeeIC}" /></td>
57:                                                 <td><c:out value="${emp.EmployeeName}" /></td>
58:                                                 <td><c:out value="${emp.EmployeePosition}" /></td>


Stacktrace:] with root cause
javax.el.PropertyNotFoundException: Property 'EmployeeID' not found on type bean.Employee
    at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:266)
    at javax.el.BeanELResolver$BeanProperties.access$300(BeanELResolver.java:243)

这是我的jsp页面:

<div class="module-body table">
<form name = delete" method="POST" action="DeleteEmployeeServlet">
<table cellpadding="0" cellspacing="0" border="0" class="datatable-1 table 
table-bordered table-striped     display" width="50%">

<thead>
<tr>
<th>Employee ID</th>
<th>Employee IC</th>
<th>Employee Name</th>
<th>Employee Position</th>
<th>Employee Session</th>
<th>Employee Grade</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<c:forEach items="${employee}" var="emp">
<tr>
<td><c:out value="${emp.EmployeeID}" /></td>
<td><c:out value="${emp.EmployeeIC}" /></td>
<td><c:out value="${emp.EmployeeName}" /></td>
<td><c:out value="${emp.EmployeePosition}" /></td>
<td><c:out value="${emp.EmployeeSession}" /></td>
<td><c:out value="${emp.EmployeeGrade}" /></td>
<td><a href="DeleteEmployeeServlet?table=employee&employeeid=<c:out 
     value="${emp.EmployeeID}" />"onclick="return confirm('Are you 
     sure?');"><i class="icon-trash"></i></a> <br></td>
</c:forEach>
</tbody> 

这是我的 servlet 页面:

package servlet;

import java.io.IOException;
import java.sql.SQLException;
import java.util.Date;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import model.EmployeeDAO;
import bean.Employee;

public class DeleteEmployeeServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private EmployeeDAO dao;

    public DeleteEmployeeServlet() {
        super();
        dao = new EmployeeDAO();
    }  
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String forward = "";
        String table = request.getParameter("table");
        if(table.equalsIgnoreCase("employee")){
            int id = Integer.parseInt(request.getParameter("EmployeeID"));
            dao.DeleteEmployeeDetails(id);
            forward = "DisplayAllEmp?table=employee";
        }
        RequestDispatcher view = request.getRequestDispatcher(forward);
        view.forward(request, response);
    }

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}

}

这是我的模型/DAO(viewEmployee):

public List<Employee> viewEmployee() {
        List<Employee> employee = new ArrayList<Employee>();
        try {
            currentCon = ConnectionManager.getConnection();
            stmt = currentCon.createStatement();
            ResultSet rs = stmt.executeQuery("select * from employee");
            while (rs.next()) {
                Employee e = new Employee();
                e.setEmployeeID(rs.getInt("EmployeeID"));
                e.setEmployeePassword(rs.getString("EmployeePassword"));
                e.setEmployeeName(rs.getString("EmployeeName"));
                e.setEmployeeIC(rs.getString("EmployeeIC"));
                e.setEmployeeGender(rs.getString("EmployeeGender"));
                e.setEmployeeEmail(rs.getString("EmployeeEmail"));
                e.setEmployeePhoneNo(rs.getString("EmployeePhoneNo"));
                e.setEmployeeStreet1(rs.getString("EmployeeStreet1"));
                e.setEmployeeStreet2(rs.getString("EmployeeStreet2"));
                e.setEmployeePCode(rs.getInt("EmployeePCode"));
                e.setEmployeeCity(rs.getString("EmployeeCity"));
                e.setEmployeeState(rs.getString("EmployeeState"));
                e.setEmployeeQualification(rs.getString("EmployeeQualification"));
                e.setEmployeePosition(rs.getString("EmployeePosition"));
                e.setEmployeeSession(rs.getString("EmployeeSession"));
                e.setEmployeeGrade(rs.getInt("EmployeeGrade"));
                e.setEmploymentDate(rs.getDate("EmploymentDate"));
                employee.add(e);
                System.out.println("Employee id: " + e.getEmployeeID());
            }
            System.out.println("All rows from table view Employee retrieved!");
        } catch (SQLException e) {
            System.out.println("Failed: An SQL Exception occured : " + e);
            e.printStackTrace();
        }
        return employee;
    }

这是我的 DisplayAllEmp DAO:

public void DeleteEmployeeDetails(int id) {
        try {
            currentCon = ConnectionManager.getConnection();
            ps = currentCon.prepareStatement("delete from employee where employeeID=?");
            // Parameters start with 1
            ps.setInt(1, id);
            ps.executeUpdate();
            System.out.println("1 row of table Employee has been deleted. employeeID:" + id);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

这是我的 bean(员工):

package bean;

import java.util.Date;

public class Employee {

    private int EmployeeID;
    private String EmployeePassword;
    private String EmployeeName;
    private String EmployeeIC;
    private String EmployeeGender;
    private String EmployeeEmail;
    private String EmployeePhoneNo;
    private String EmployeeStreet1;
    private String EmployeeStreet2;
    private int EmployeePCode;
    private String EmployeeCity; 
    private String EmployeeState;
    private String EmployeeQualification;
    private String EmployeePosition;
    private String EmployeeSession;
    private int EmployeeGrade;
    private Date EmploymentDate;
    private boolean valid;

    public Employee() {
        EmployeeID = 0;
        EmployeePassword = null;
        EmployeeName=null;
        EmployeeIC=null;
        EmployeeGender=null;
        EmployeeEmail=null;
        EmployeePhoneNo=null;
        EmployeeStreet1=null;
        EmployeeStreet2=null;
        EmployeePCode=0;
        EmployeeCity=null; 
        EmployeeState=null;
        EmployeeQualification=null;
        EmployeePosition=null;
        EmployeeSession=null;
        EmployeeGrade=0;
        EmploymentDate=null;
    }

    public Employee(int employeeID, String employeePassword, String employeeName, String employeeIC, String employeeGender, String employeeEmail, String employeePhone, String employeeStreet1, String employeeStreet2, int employeePCode, String employeeCity, String employeeState, String employeeQuaification, String employeePosition, String employeeSession, int employeeGrade, Date employmentDate) {
        EmployeeID = employeeID;
        EmployeePassword = employeePassword;
        EmployeeName=employeeName;
        EmployeeIC=employeeIC;
        EmployeeGender=employeeGender;
        EmployeeEmail=employeeEmail;
        EmployeePhoneNo=employeePhone;
        EmployeeStreet1=employeeStreet1;
        EmployeeStreet2=employeeStreet2;
        EmployeePCode=employeePCode;
        EmployeeCity=employeeCity; 
        EmployeeState=employeeState;
        EmployeeQualification=employeeQuaification;
        EmployeePosition=employeePosition;
        EmployeeSession=employeeSession;
        EmployeeGrade=employeeGrade;
        EmploymentDate=employmentDate;
    }

    public int getEmployeeID() {return EmployeeID;}
    public void setEmployeeID(int employeeID) {EmployeeID = employeeID;}

    public String getEmployeePassword() {return EmployeePassword;}
    public void setEmployeePassword(String employeePassword) {EmployeePassword = employeePassword;}

    public String getEmployeeName() {return EmployeeName;}
    public void setEmployeeName(String employeeName) {EmployeeName = employeeName;}

    public String getEmployeeIC() {return EmployeeIC;}
    public void setEmployeeIC(String employeeIC) {EmployeeIC = employeeIC;}

    public String getEmployeeGender() {return EmployeeGender;}
    public void setEmployeeGender(String employeeGender) {EmployeeGender = employeeGender;}

    public String getEmployeeEmail() {return EmployeeEmail;}
    public void setEmployeeEmail(String employeeEmail) {EmployeeEmail = employeeEmail;}

    public String getEmployeePhoneNo() {return EmployeePhoneNo;}
    public void setEmployeePhoneNo(String employeePhoneNo) {EmployeePhoneNo = employeePhoneNo;}

    public String getEmployeeStreet1() {return EmployeeStreet1;}
    public void setEmployeeStreet1(String employeeStreet1) {EmployeeStreet1 = employeeStreet1;}

    public String getEmployeeStreet2() {return EmployeeStreet2;}
    public void setEmployeeStreet2(String employeeStreet2) {EmployeeStreet2 = employeeStreet2;}

    public int getEmployeePCode() {return EmployeePCode;}
    public void setEmployeePCode(int employeePCode) {EmployeePCode = employeePCode;}

    public String getEmployeeCity() {return EmployeeCity;}
    public void setEmployeeCity(String employeeCity) {EmployeeCity = employeeCity;}

    public String getEmployeeState() {return EmployeeState;}
    public void setEmployeeState(String employeeState) {EmployeeState = employeeState;}

    public String getEmployeeQualification() {return EmployeeQualification;}
    public void setEmployeeQualification(String employeeQualification) {EmployeeQualification = employeeQualification;}

    public String getEmployeePosition() {return EmployeePosition;}
    public void setEmployeePosition(String employeePosition) {EmployeePosition = employeePosition;}

    public String getEmployeeSession() {return EmployeeSession;}
    public void setEmployeeSession(String employeeSession) {EmployeeSession = employeeSession;}

    public int getEmployeeGrade() {return EmployeeGrade;}
    public void setEmployeeGrade(int employeeGrade) {EmployeeGrade = employeeGrade;}

    public Date getEmploymentDate() {return EmploymentDate;}
    public void setEmploymentDate(Date employmentDate) {EmploymentDate = employmentDate;}

    public boolean isValid() {return valid;}
    public void setValid(boolean valid) {this.valid = valid;}

}

【问题讨论】:

标签: java jsp servlets javabeans


【解决方案1】:

您的 Employee 类只有私有字段,因此您无法使用点符号访问它们。 settersgetters 是公开的,可以在课堂外访问。使用它们在您的 jsp 文件中检索您想要的信息。

此外,请查看 Oracle 的文档页面 Declaring Member Variables,部分 Access Modifiers

  • public 修饰符——所有类都可以访问该字段。

  • private 修饰符——该字段只能在其自己的类中访问。

当您编写 ${emp.EmployeeID} 时,您要求的是一个名为 EmployeeID 的字段,该字段具有 public 访问修饰符,但不存在。

【讨论】:

  • 我已尝试公开所有私有属性。但输出仍然不如预期。对于此错误,您还有其他解决方案吗?
  • @AinOmar 您不需要将字段更改为公开,您只需使用getters。更改访问修饰符时出现什么错误?
猜你喜欢
  • 2019-06-07
  • 2016-09-16
  • 2011-11-15
  • 2016-01-10
  • 2015-10-09
  • 2019-11-05
  • 2012-05-22
  • 1970-01-01
相关资源
最近更新 更多