我正在开发Spring / Hibernate示例Web应用程序。实际上,我正在尝试从数据库加载员工。在这种情况下,当从数据库获取员工和地址表的数据时,我得到了NumberFormat异常。
以下是我正在处理的代码,
JSP代码:
<c:if test="${!empty employeeList}">
<table class="data">
<c:forEach items="${employeeList}" var="emp">
<tr>
<td><c:out value="${emp.firstname}" /></td>
<td><c:out value="${emp.lastname}" /></td>
<td><c:out value="${emp.email}" /></td>
<td><a href="edit/${emp.id}">Edit</a></td>
<td><a href="delete/${emp.id}">Delete</a></td>
</tr>
</c:forEach>
控制器代码:
@RequestMapping(value = "/", method = RequestMethod.GET)
public String listEmployees(ModelMap map)
{
map.addAttribute("employeeList", employeeManager.getAllEmployees());
return "editEmployeeList";
}
服务层代码:
@Override
@Transactional
public List<EmployeeEnitity> getAllEmployees() {
return employeeDAO.getAllEmployees();
}
public List<EmployeeEntity> getAllEmployees() {
return this.sessionFactory.getCurrentSession().createQuery("select ee.firstname,ee.lastname,addr.email from " +
"com.howtodoinjava.entity.EmployeeEntity ee, com.howtodoinjava.entity.AddressEntity addr where ee.id=addr.id").list();
}
请帮我解决此异常
答案 0 :(得分:1)
服务方法getAllEmployees
中session.createQuery(String).list()的返回类型为List<Object[]>
,不是List<Employee>
在控制器中,您可以在此行中将此List<Object[]>
添加到模型中:
map.addAttribute("employeeList",employeeList);
现在在JSP中,您正尝试在JSTL forEach
循环中访问模型对象:
<c:forEach items="${employeeList}" var="emp">
由于employeeList
代表List<Object[]>
,变量emp
代表Object[]
,而不是Employee
。现在在变量dot (.)
上使用emp
运算符意味着您正在尝试访问特定索引位置的元素。例如:
emp.0 --> is same as emp[0]
emp.1 --> is same as emp[1]
emp.indexPosition --> is same as emp[indexPosition]
因此,当您说emp.firstName
时,firstName
会转换为整数,因为firstName
不是您获得的整数NumberFormatException