1

发生了可怕的错误。

我有

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 方法(虽然是额外的代码)。

4

1 回答 1

0

我认为问题是

objectList[i] = activitiesToDelete.get(i).intValue(); 

intValue() 将 Integer 转换为 int。int 不是 Object,所以它必须把它变成一个 Object 来存储它,我认为它选择了 toString。尝试

objectList[i] = activitiesToDelete.get(i); 
于 2012-05-19T14:29:14.230 回答