你的
getAllEmployees(searchName)方法不会返回
List<Employee>,而是返回
List<Object[]>。很可能还会有编译器生成的“未经检查的强制转换”警告,你忽略或取消了该警告。
证据是参与
javax.el.ArrayELResolver堆栈跟踪。仅在EL表达式的基数为数组类型时才涉及此内容。如果确实有一个Employee而不是
Object[],那么你将期望
javax.el.BeanELResolver在
${employee.id}要评估EL表达式的特定堆栈跟踪行中。与${employee}你实际的情况一样,EL会将id属性解释为数组索引,然后尝试将其解析为Integer,但是这样做失败,如你在堆栈跟踪的顶部看到的那样。要解决此问题,你有两种选择:
修复
getAllEmployees(searchName)返回实数 的方法
List<Employee>。通常,这是通过Employee直接查询实体而不是单个列/字段来完成的。
更换所有不正确的
List<Employee>通过声明
List<Object[]>和在EL处理它作为一个对象数组像这样
${employee[0]},${employee[1]}等


