发生了一件非常糟糕的事情。
我有
ArrayList<Integer> activitiesToDelete;
我需要准备对象数组以传递给Spring jdbcTemplate。但是由于某些原因,ArrayList中的元素被视为String,因此在执行jdbcTemplate时会中断,抱怨它无法从String转换为int。然后我尝试在循环内转换,看看是否有帮助: - \我显然不能做Integer.parseInt,因为IDE正确地将其视为整数。每当我分配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方法(尽管有额外的代码)。
答案 0 :(得分:0)
我认为问题是
objectList[i] = activitiesToDelete.get(i).intValue();
intValue()将Integer转换为int。 int不是Object,所以它必须把它变成一个Object来存储它,我认为它选择了toString。尝试
objectList[i] = activitiesToDelete.get(i);