では、作成した
SampleDataドメインクラスを利用するコントローラーを作りましょう。これにはいくつか方法があります。ここではコマンドラインとGGTSのもっとも基本的な方法を紹介しておきましょう。
1. コマンドライン先程と同様に、プロジェクトの
grailsw.batを実行してコマンドプロンプトを表示し、以下のようにコマンドを実行します。
create-controller SampleData
これで、
SampleDataController.groovyが「
controllers」フォルダに生成されます。コントローラーの作成は既にやりましたが、それと全く同じですね。
では、生成された
SampleDataController.groovyを開き、クラスを作成しましょう。今回は、とりあえず
indexメソッドに簡単な文を書いておくだけにします。下のリスト欄にそのサンプルコードを掲載しておきました。
ここでは、
indexメソッドで以下のような文を実行しています。これは、すべての
SampleDataインスタンスを取得するものです。
def arr = SampleData.all;
ここでは「
all」というメソッドを呼び出しています。これは、そのクラスのインスタンスすべてをリストにまとめて返すものです。「あれ、
SampleDataには
allなんてなかったぞ?」と思った人。その通り、ドメインクラスにはそんなメソッドはないし、そうしたメソッドを持つクラスを継承してもいません。それでもちゃんと
allメソッドは使えます。
これは、「
DI(Dependency Injection、依存性注入)」と「
AOP(Aspect Oriented Programming、アスペクト指向プログラミング)」と呼ばれる技術によるものです。これらはGrailsの現開発元であるSpringSourceのメインフレームワーク「
Spring Framework」が得意とするもので、これらのおかげで、「何の変哲もないただのPOJOクラスを定義するだけで、ビルド時に自動的に必要な機能が組み込まれ使えるようになる」という摩訶不思議なことが実現されているのです。
というわけで、とりあえずallで全インスタンスを取得してそのまま
renderしておきました。要するに、
System.out.printlnなんかで表示される、あれをレンダリングして表示するだけのサンプルです。(ちゃんとしたやつは次回作ります。ま、データが保管されてるのが確認できればOKってことで)