では、実際にコントローラーを作ってみましょう。下のリスト欄に、簡単なコントローラーのソースコードを記述しておきました。これを「
Application.java」という名前で「
controllers」フォルダ内に配置してください。
また、既に作成してある「
Application.scala」は、アプリケーション外にファイルを移動するなどして読み込まれないようにしておきましょう。同じ
Applicationクラスが2つあると正常に動作しないので注意してください。
また、ビューテンプレートである
index.scala.htmlも修正しておきましょう。下のリスト欄を参考に記述してください。見ればわかるように、こちらはScalaをスクリプトレットとして利用する形のままです。Javaで記述する場合も、ビューだけはScalaを使って記述する必要があります。こちらは、JSPなどを利用することはできないのです。
さて、今回はindexメソッドを1つだけ用意しておきました。ここで行なっているのは非常に単純な処理です。タイトルとメッセージのテキストを変数に用意し、
index.scala.htmlのビューテンプレートをレンダリングして
Resultを返す、といったものです。
「
Ok」は、問題なくリクエストが完了した場合の結果を示す
Resultを返すメソッドです。そしてその引数には
indexインスタンスの「
render」が呼び出されています。
indexインスタンスは、「
index.scala.html」によって自動生成されるオブジェクトです。「
render」メソッドは、引数に指定した値をビューテンプレートに受け渡す形で
index.scala.htmlをレンダリングし結果を返すものです。
これらの
Okや
index、
renderといったメソッドやインスタンスは、Scalaのときにも登場しました。使い方といい働きといい、全く同じものだと考えてよいでしょう。
renderの引数で渡された値は、そのままビューテンプレートの冒頭に用意されている変数に受け渡されます。そしてそれらを使ってビューの表示を行います。このあたりは、Scalaベースでのコントローラー&ビューのところで説明した通りです。
最後に、
routesでのルート情報の記述についても触れておきましょう。
Applicationクラスの
indexメソッドを公開するには、以下のように
routesに記述しておきます。
GET / controllers.Application.index
これで、
/に
indexアクションが割り当てられます。見ればわかるように、Scalaの場合と全く同じです。基本的にScalaであろうとJavaであろうと、書いたコントローラーのルート設定の仕方は全く同じなのです。