JSTL和POJO的对应问题
JSTL和POJO类的变量,应该是一一对应的,具体演示如下:
public class Employee {
private int empId;
private String empName;
private String gender;
private String email;
private BigDecimal salary;
private String jobTitle;
}
<tr>
<td>${emp.empId}</td>
<td>${emp.empName }</td>
<td>${emp.gender }</td>
<td>${emp.email }</td>
<td>${emp.salary }</td>
<td>${emp.jobTitle }</td>
<td>Edit</td>
<td>Delete</td>
</tr>
可是今天在使用JSTL时候,居然无法显示对应表格,报错内容为:
org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/views/emp/list.jsp at line 35
32: </tr>
33: <c:forEach items="${emps }" var="emp">
34: <tr>
35: <td>${emp.empId}</td>
36: <td>${emp.empName }</td>
37: <td>${emp.gender }</td>
38: <td>${emp.email }</td>
而将empId改为id却显示正常。本着坚持不懈的编程精神,终于查处了问题所在。
先前的POJO对应的代码为:
private int empId;
public int getId() {
return empId;
}
public void setId(int id) {
this.empId = id;
}
可以发现,setId里的传参为“id”。这个是之前自己手动写的时候出现的疏漏,因此JSTL没有找到名为empId的变量,才会报错。而改为“id”后,便可以正常显示。
因此写一篇这样的博客,希望遇到同样问题的人可以有查找问题的思路和方向,并且最好使用自带的get、set方法生成器,尽量避免手动输入而造成的失误。