- blogs:
- cles::blog
2009/09/27
getParameterMap()でjava.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String]が出るときは
久しぶりにJavaでプログラミングをしているのですが、最近はPHP, Ruby, Perl, Pythonと弱い型付けの言語べったりという感じだったので、なかなか調子が戻りません。例えばこんな感じのコードを書いて、Eclipseの文法エラーが消えるのをずっと待ってたりとかするので、かなり重傷のようです。
str = "foo";
そんな調子で久しぶりにサーブレットでウェブアプリとか書いてみたりしたんですが、下記のようなコードのClass Cast Exceptionが取れずにどっぷりとハマってしまいました。
Map<String,String> map = request.getParameterMap();
で、エラーでググってみると世界中には同じことでハマっている人もいました。
java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String When using HttpServletRequest getParameters() Stephen on Software aka SOS
So what it means is that it actually returns a type of Mapinstead of Map . So the correct defination is map.get(key) returns a String[] not a String. This is because request.getParameter(key) returns a String which is actually the first element of the resulting string array.
なるほど。getParameters()のMapのValueはString[]で、getParameter()は最初の値しか取れていないのか。そういえば遙か昔に、getParameter()で値が全部取れなくてハマった記憶もあるなぁ。ひとまず今回は下記のように書き換えて事なきを得ました。
Map<String,String[]> map = request.getParameterMap();
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/3221
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . アーロンチェアのポスチャーフィットを修理(100809)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(100093)
3 . 年次の人間ドックへ(100026)
4 . 三菱鉛筆がラミーを買収(99616)
5 . 2023 年分の確定申告完了!(1つめ)(99597)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(100093)
3 . 年次の人間ドックへ(100026)
4 . 三菱鉛筆がラミーを買収(99616)
5 . 2023 年分の確定申告完了!(1つめ)(99597)
cles::blogについて
Referrers