ドメインクラス(Modelクラス)を作ろう! (4/5)
作成:2013-10-26 09:10
更新:2013-10-26 09:10
更新:2013-10-26 09:10
■コントローラーを作成しよう!
では、作成したSampleDataドメインクラスを利用するコントローラーを作りましょう。これにはいくつか方法があります。ここではコマンドラインとGGTSのもっとも基本的な方法を紹介しておきましょう。
1. コマンドライン
先程と同様に、プロジェクトのgrailsw.batを実行してコマンドプロンプトを表示し、以下のようにコマンドを実行します。
では、生成されたSampleDataController.groovyを開き、クラスを作成しましょう。今回は、とりあえずindexメソッドに簡単な文を書いておくだけにします。下のリスト欄にそのサンプルコードを掲載しておきました。
ここでは、indexメソッドで以下のような文を実行しています。これは、すべてのSampleDataインスタンスを取得するものです。
これは、「DI(Dependency Injection、依存性注入)」と「AOP(Aspect Oriented Programming、アスペクト指向プログラミング)」と呼ばれる技術によるものです。これらはGrailsの現開発元であるSpringSourceのメインフレームワーク「Spring Framework」が得意とするもので、これらのおかげで、「何の変哲もないただのPOJOクラスを定義するだけで、ビルド時に自動的に必要な機能が組み込まれ使えるようになる」という摩訶不思議なことが実現されているのです。
というわけで、とりあえずallで全インスタンスを取得してそのままrenderしておきました。要するに、System.out.printlnなんかで表示される、あれをレンダリングして表示するだけのサンプルです。(ちゃんとしたやつは次回作ります。ま、データが保管されてるのが確認できればOKってことで)
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ってことで)
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
package gralisapp class SampleDataController { def index = { def arr = SampleData.all; render arr; } }
※関連コンテンツ