整数是字符串 - 怎么会这样?

时间:2012-05-19 14:17:43

标签: java

发生了一件非常糟糕的事情。

我有

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方法(尽管有额外的代码)。

1 个答案:

答案 0 :(得分:0)

我认为问题是

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

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

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