我有一个employeebean resultEmployeeList在请求范围内设置的数组列表。我不知道我的做法是否正确。但是这里是jsp中使用的jstl代码。
<c:forEach var="element" items="${resultEmployeeList} ">
<tr>
<td>
${element.empId}
</td>
<td> ${element.empname}</td>
</tr>
</c:forEach>
当我试图访问employeebean的empId属性时,它显示了这个错误
javax.el.PropertyNotFoundException: Property 'empid' not found on type java.lang.String
这是employeebean
public class EmployeeBean {
private int empId;
private String empname;
private boolean exceptionExist;
public EmployeeBean() {
}
public int getEmpId() {
return empId;
}
public void setEmpId(int empId) {
this.empId = empId;
}
public EmployeeBean(int empId, String empname) {
this.empId = empId;
this.empname = empname;
}
public String getEmpname() {
return empname;
}
public void setEmpname(String empname) {
this.empname = empname;
}
public boolean exceptionExist(){
return true;
}
}
这是我把resultEmployeeList
public boolean getEmployeesIn(ArrayList<Integer> empids,HttpServletRequest request) {
ArrayList<EmployeeBean> employeeList=new ArrayList<EmployeeBean>();
Iterator empidIterator=empids.iterator();
while(empidIterator.hasNext()){
employeeList.add(eObject.getEmployee((Integer)empidIterator.next()));
}
if(employeeList.isEmpty())
return false;
else{
request.setAttribute("resultEmployeeList", employeeList);
}
return true;
其中eObject.getEmployee(..)调用这个方法。
public EmployeeBean getEmployee(int empId) {
EmployeeBean eb = new EmployeeBean();
try {
String query = "select * from empschema.employee where empid=?";
ps = con.prepareStatement(query);
ps.setInt(1, empId);
ResultSet rs = ps.executeQuery();
if (!rs.next()) {
eb=null;
return eb;
} else {
eb.setEmpId(rs.getInt(1));
eb.setEmpname(rs.getString(2));
}
} catch (SQLException ex) {
Logger.getLogger(EmployeeDAO.class.getName()).log(Level.SEVERE, null, ex);
}
return eb;
}
如果您按原样粘贴了代码,那么在items="${resultEmployeeList} "
中${resultEmployeeList}
之后会有一个额外的空间。这可能导致变量element
被视为字符串而不是实际类型。