JavaServletでリクエストからパラメータを取得する時、getParameterというメソッドを使いますよね。
ですがこのgetParameter、name属性をしっかりと引数に渡してあげても、nullを返す事があるのです。
以前その理由が分からず少し悩んだ事があったので、今回はその事について触れたいと思います。
今回使用するファイルは以下の通りです。
- index.html
- MakeQuizServlet.java
- TeachAnswerServlet.java
少し量が多いので、各ファイルの中身は以下のURLに移しておきます。
これらはきちんと動作します。なので少しいじってnullという実行結果を出してみましょう。
下記のようにソースコードを修正して下さい。いじった部分だけ色を変えています。
はい。name属性を<h2>タグの中に移しただけですね。なので普通に実行されそうですが……
ページが真っ白になってしまいますよね。どうしてそうなるのかと言うと、name属性が持つvalueを取得出来ないからです。
「……いやいや、name属性を<h2>タグの中に移しただけだし、valueだってきちんと設定しているじゃん!」と思われるかもしれませんが、getParameterで取得出来る値は「<input>タグのname属性が持つvalue属性の値」だけだからです。
今回のまとめ
- getParameterで取得出来る値は<input>タグのname属性が持つvalue属性の値のみ