1

ひどく間違ったことが起こっています。

私は持っている

ArrayList<Integer> activitiesToDelete;

Spring jdbcTemplate に渡すオブジェクトの配列を準備する必要があります。しかし、何らかの理由で ArrayList の要素が String として扱われるため、jdbcTemplate の実行時点で中断し、String から int に変換できないと不平を言います。次に、ループ内で変換して、それが役立つかどうかを確認しようとしました:-\そして、IDEが整数として正しく処理するため、明らかにInteger.parseIntを実行できません。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 はオブジェクトではないため、オブジェクトに変換して格納する必要があり、toString が選択されていると思います。試す

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