@RequestParameter・・・??
2週間ぶりくらいの更新です。
もっと更新の頻度を上げてアウトプットをしたいと考えているjackです。
最近はJavaとposgreSQLを使用したアプリケーションを作成しています。
JavaのフレームワークであるSpringBootやthymeleafを使用し始めましたが、正直理解度は浅いです。。。
今回は@RequestParameterについてです。
ビュー側で入力した値をコントローラ側で受け取る処理はよくあると思います。
その際に使うのが掲題のアノテーションです。
*ここからはSpringBoot初学者の説明のため、おそらく語弊があります。
具体的にはHTMLのformタグの中に
<input type="text" name="textForm">
みたいな入力欄があるとします。
こうすることによって、先ほど入力した値をtopメソッド内で
textという変数に入れて使用できます。
今まで@PathVariableしか使用していなかったので、こういうやり方もあるのかと学びました。(おそらく@RequestParameterの方が使用頻度高そう。。)
@RequestParameterはnullを基本的に許容していません。
なのでフォームを空のまま送信してしまうとエラーが発生します。
そういう場合は上記のコードの様にrequest="false"を指定してあげれば大丈夫です。(私はこのエラーでしばらくハマりました笑)
これからもよく使いそうなので、ここに備忘録として残します。
JavaとMySQLを用いたアプリケーション作成
最近はJavaとMySQLを使用して、掲示板のようなアプリケーションを作成していました。
今日コードレビューを受けた際に、初めて知った知識があったのでここに備忘録として残します。
掲示板を使用するユーザーの情報を編集する際に、編集するユーザーのidを取得してデータベースからそのユーザーの情報を引っ張ってくるという時のお話。
前提として、データベース上のuserテーブルのidカラムはint型の数値が入ります。
DAOでsql文を作成する際に、user_id = ?とバインド変数を使用して、後からメソッドの引数としてint型のidを渡していました。
id自体はrequest.getParameter("userId")という形で取得してきていたので、String型での取得ということになります。これをint型にキャストして、
int userId = Integer.parseInt(request.getParameter("userId"))
という形にしてたんですね。
一応機能としては、動きました。
しかし打鍵テストの際に、編集画面のURLに直接、http~userId=hogeと打ち込むと、エラーが発生しました。
理由としては、hogeをint型にキャストできませんよということでした。
ただ、そうなるとint型でもメソッドに引数としてuserIdを渡すのは無理なのでは?と
ハマってしまいました。
結論、ユーザーを検索してくるselectメソッド(引数にString userId)を新しく追加してできました。
データベースから引っ張ってくる際に、String型の数値を(語弊があるかも)用いて検索がかけれることを知りませんでした。
レビューの際に教えていただき、勉強になりましたとさ。
Java boolean型
Javaの変数でboolean型が出てきました。
これは真偽値を表すもので、trueもしくはfalseが入ります。
例えば、
boolean bool = true;
の様になります。
true, falseは" "を付けないことに注意。
また、
boolean bool = 2*9 == 18
の様に書くこともできます。
この場合、右辺の式があっているためboolにはtrueが入ります。
Java swich文
switch文は条件分岐に使われます。
if文も条件分岐に使われますが、条件によってはswitch文の方が簡潔にコードを記述できるようです。
switch (条件の値) {
case 値1:
処理1;
break;
case 値2:
処理2;
break;
}
となります。
また、defaultを使うと、caseで指定した値以外の値の処理を行うことができます。
if文のelseのような使い方ですね。
また何かあれば追記します。
Java 変数
Javaで変数を定義するやり方についての備忘録です。
ex. numberという変数に3という数値を代入する場合
int numer;
numer = 3;
これでnumberに3が代入されました。
Javaではまず変数の型を指定しないといけないんですね。
Rubyとの大きな違いはそこかなと感じました。
型としてはStiring(文字列)とint(数値)というのを今のところ学びました。
おそらくまだまだ出てくるでしょう。
都度、覚えたいなと思います。
追記
double型も出てきました。
double型は小数点の値を取り扱う型で、1.2や-15.7などですね。
2.0などもこの型に含まれるようです。