Eclipseのエディターでサーブレットでフォームのプログラムを作成していた所、リクエストパラメータではString型でしかインスタンスを取得出来ないという問題に出くわしました。
問題解決は変換の基礎を抑えて入ればなんの問題もないのですが、追加構文が少し変わった形をしていて困る方もいらっしゃるかと思いますのでこちらに備忘録を残しておきます。
エラー状況
Eclipseでサーブレットにリクエストパラメータを取得するプログラムを作成していた所で67行の黄色の文で警告が発生しました。
64 String id = request.getParameter(“id”);
65 String pass = request.getParameter(“pass”);
66 String name = request.getParameter(“name”);
67 int birthday = request.getParameter(“birthday”));
赤丸の×の警告がでています。
?
中身は「String型からint型には変換できません」とのメッセージが…
request.getParameterってint型取得出来ないの?
じゃあどうすればいいの?
↓解決法
解決法
int型に変換して取得を行います。
javaの基礎で散々使用したInteger.parseInt()を使用してプログラムを書き直します。
int birthday = Integer.parseInt(request.getParameter(“birthday”));
と書き直してあげれば、警告もなくなると思います。
あとはJavaBeansのスコープのインスタンスの元となるクラスのフィールドとメソッドをint型で作成すれば、サーバーの実行が可能となります。
※その他変換
値文字列→基本データ型に変換
byte型:Byte.parseByte(“値”);
short型:Short.parseShort(“値”);
int型:Integer.parseInt(“値”);
long: Long.parseLong(“値”);
float: Float.parseFloat(“値”);
double: Double.parseDouble(“値”);
boolean: Boolean.parseBoolean(“値”);
※追記
主旨から少しズレますがlong型を==で比較したりする際は、
数値の末尾に「L」を付けるとlong型と認識される。
ここもつまずいたので一応書いておきます。
まとめ
int 変数 = Integer.parseInt(request.getParameter(“フォームからの取得名”));
とint型に変換を行えば、request.getParameterでのint型での取得が可能となると思います。
お読み頂きありがとうございました。
駆け出しエンジニア けいこ♂
コメント