この記事で分かる事
SpringBootを使用したWebアプリケーション開発において、ビューから送信された(キーが同じ)複数のデータをコントローラのListクラスで受け取る際、どのような形で格納されるか、表にまとめています。
表を見る事で、コントローラのデータハンドリングを適切に指定できます。
リクエストとList内データのまとめ
・条件
リクエストはhoge=valueの形式で送ります。
コントローラのListクラスの型はList<String> hogeで宣言しています。
hoge
(デバッグで見た値)はEclipceのデバッグ機能で表示された値を記載しています。
リクエストの状態\List | hoge (デバッグで見た値) |
hoge.size() (実行結果) |
hoge.get(0) (実行結果) |
---|---|---|---|
keyがリクエストに無い | null | NullPointerException at size() | NullPointerException at get(int) |
key、value共に有りが1ペア (hoge=value1) |
[value1] | 1 | value1 |
key、value共に有りが2ペア (hoge=value1、 hoge=value2) |
[value1, value2] | 2 | value1 |
keyはあるが、valueは無し (hoge=) |
[] | 0 | IndexOutOfBoundsException |
keyは2つあるが、どちらもvalueは無し (hoge= hoge=) |
[null, null] | 2 | null |
感想
表の3行目まではイメージ通りでしたが、最後の2つ
「keyはあるが、valueは無し」
「keyは2つあるが、どちらもvalueは無し」
の結果について次の点で以外だと感じました。
・リクエストが(hoge=)の場合、hoge.size()とhoge.get(0)共にエラーとなると予想しましたが違った事
・リクエストが(hoge=)の場合と(hoge= ,hoge=)の場合で結果が違う結果になる事
リクエストにはvalueが存在するデータのみ送る方が分かりやすいと思いました。