9

送信されているクライアントからのパラメータがあります。

ids[] = 11
ids[] = 12
ids[] = 21

サーバー側には、次の方法のSpringコントローラーがあります。

@RequestMapping("/delete.x")
public @ResponseBody Map<String, Object> delete(HttpServletRequest request, @RequestParam("ids[]") List<Integer> ids) {

次のようにIDのコレクションを反復処理しようとすると:

for (Integer id : ids) {

次のような例外が発生します。

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer

SpringはIDのタイプをList<String>に変更していますか?どうすればこの問題を回避し、IDをリスト内に整数として格納することができますか?

4

2 に答える 2

15

あなたが直面している問題は、Javaに型消去があるということです。したがって、実行時にaはaList<Integer>と同等であり、List<String>Springには整数がリストに含まれていることを知る方法がありません。

回避策は、整数のリストの代わりに整数配列を使用することです。

@RequestMapping("/delete.x")
public @ResponseBody Map<String, Object> delete(HttpServletRequest request,
  @RequestParam("ids[]") Integer[] ids) {
于 2013-01-14T19:23:50.483 に答える
1

文字列の場合、私はこのように実行し、これは適切に実行されています

<form action="addArticals">
    <input name="artical[]" type="text"> </input>
    <input name="artical[]" type="text"> </input>
    <input name="artical[]" type="text"> </input>
    <input name="artical[]" type="text"> </input>
    .
    .
    .
    .
    <input name="artical[]" type="text"> </input>
</form>

コントローラーでは次のようになります

@RequestMapping("/addArticals")
public String articalStore(@RequestParam("artical[]")List<String> articals, Modal modal)
{
}
于 2015-08-22T04:43:12.167 に答える