フォワードやリダイレクトのアドレス
AddPageをみてみる
return Redirect.to("jsp/add.jsp"); return Forward.to("jsp/add.jsp");
最初にスラッシュはいらないようだ。
続いてCheckboxPage
return Redirect.to("/jsp/checkbox.jsp"); return Forward.to("/jsp/checkbox.jsp");
ん?やっぱりスラッシュは必要なのか?どっちが推奨?
オートボクシングを使用していない
あとはサンプルコードでオートボクシングを使っていないのが非常に気になる。一瞬1.4時代のコードかと錯覚する人は多いかもしれない。
現在のサンプル
Integer result = null; try { Integer arg1 = Integer.valueOf(s1); Integer arg2 = Integer.valueOf(s2); result = new Integer(arg1.intValue() + arg2.intValue()); request.setAttribute("result", result); } catch (Exception e) { request.setAttribute("message", MessageConstants.ADD_ERROR_MESSAGE); }
これは以下のようにしたほうが見やすいと思う。足し算をしているというのが一目瞭然だし、nullはとらないのでintで持ってるほうが自然で、intValue()などメソッド呼び出さない分上よりはパフォーマンスで有利か(この程度なら変わらないけどループの内側だとどうだろう)。
try { int num1 = Integer.parseInt(s1); int num2 = Integer.parseInt(s2); int sum = num1 + num2; request.setAttribute("result", sum); } catch (Exception e) { request.setAttribute("message", MessageConstants.ADD_ERROR_MESSAGE); }
変数名を「sum」に変えているのは初心者の混乱を避けるため。以前NetBeansのWebアプリのサンプルでにたような混乱があった。この場合文字列の「result」と変数の「result」が出てきてるのが混乱の元というわけだ。もっともこれだけシンプルならば
request.setAttribute("result", num1 + num2);
といちいち変数に入れる必要は無いだろう。
文字列の長さ
空文字列の判定にStringはlength()=0判定している模様。
これはJ2SE5.0までの基本だが、JavaSE6ならばStringにisEmpty()があるのでこちらを使うほうが望ましいと言われている。
JavaSE 6の世界
軽くソース見てるとインターフェースにも「@Override」を使っていてJ2SE5.0しか知らない人は驚くかもしれない。この書き方は5.0ではエラーになるからだ。だが、JavaSE6からはエラーにならないのだ。