Grails
Grails はいくつかのクラス上で Mixin 経由の動的メソッドを用意している。Grails では Mixin はメソッドである。Mixin はクラスに動的に追加される機能であり、あたかもその機能がプログラム上でコンパイルされたかのように利用できる。
この動的メソッドは、クラスを拡張したりインタフェースを実装したりすることなく、操作を実行できるようにする。Grails では、クラスの種類に基づいて動的メソッドを提供する。例えば、ドメインクラスはセーブ/削除/検索などの永続性操作を自動化するメソッドを持っている。
Grails はWebページの振る舞いを実装するのにコントローラを使う。以下のコードはコントローラの例である。
1つのコントローラは複数のアクションを持ち、上のコントローラには list アクションがあり、データベース内の全ての本を含むモデルを返す。戻り値として 連想配列内で books を返しているが、これはビューから参照できる。上記例はビューのファイル名が無指定なので、grails-app/views/book/list.gsp になる。
このコントローラを生成するには、grails create-controller book コマンドを使う。grails-app/controllers ディレクトリにクラスが作成される。コントローラクラスは作成するだけで Grails に認識される。list アクションは http://ドメイン名/myapp/book/list にマッピングされる。
コントローラで XML や JSON などを返したいときは以下のように行える。
Grails は各種タグライブラリを提供するが、同時に自前のタグライブラリ(タグリブ)を簡単に作成できる。
この formatDate タグライブラリは java.util.Date オブジェクトを String にフォーマットする。このタグライブラリは grails-app/taglib/ApplicationTagLib.groovy ファイルに追加するか、ファイル名の末尾を TagLib.groovy として grails-app/taglib ディレクトリに置く。
以下は、GSP で formatDate タグライブラリを使ったコード断片である。
ダイナミックタグライブラリを GSP で使う場合、インポートタグを使う必要がない。ダイナミックタグライブラリはJSPファイルでも使えるが、GSPよりも若干作業が多い。
GORMの永続性機構は Hibernate を使って実装されている。そのため、古いデータベースであっても標準の Hibernate mapping ファイルを使ってGORMクラスにマッピングできる。