发生了可怕的错误。
我有
ArrayList<Integer> activitiesToDelete;
我需要准备要传递给 Spring jdbcTemplate 的对象数组。然而,由于某种原因,ArrayList 中的元素被视为 String,因此在 jdbcTemplate 的执行点中断,抱怨它无法从 String 转换为 int。然后我尝试在循环内进行转换,看看是否有帮助:-\ 而且我显然不能做 Integer.parseInt,因为 IDE 将它正确地视为 Integer。每当我分配 Integer a = activitiesToDelete.get(i); 它给了我:
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
int a = 相同...怎么可能?
Object [] objectList = new Object [activitiesToDelete.size()];
for (int i = 0; i < activitiesToDelete.size(); i++) {
Integer a = activitiesToDelete.get(i);
logger.info(String.valueOf(activitiesToDelete.get(i)));
objectList[i] = activitiesToDelete.get(i).intValue();
}
jdbcTemplate.update(sql, objectList);
我在这里缺少什么?
更新:罪魁祸首
@RequestMapping(value="/activities/delete", method = RequestMethod.POST) public String deleteActivities(@RequestParam("activityId") ArrayList <Integer> activitiesToDelete)
这是一个与 Spring MVC 相关的片段,它从表单中填充,似乎 Spring 无法向 ArrayList 添加正确的类型。
任何想知道的人,要么使用 int[] 或 HttpServlet 方法(虽然是额外的代码)。