BT

InfoQ ホームページ ニュース Grails 0.6がSpring Web FlowとJBoss式のRich ConversationからBest of Breed Mixを搭載

Grails 0.6がSpring Web FlowとJBoss式のRich ConversationからBest of Breed Mixを搭載

ブックマーク
Graeme Rocher氏はGrailsの最新リリース版が”Rails指向の始まり”からかけ離れているものであることを発表した(source)。このリリースは0.6とみなされていたが、それに費やされた労力を考慮するとそれが全く謙虚な設定であることが分かる。下記が最新リリースに搭載されている全ての機能である。

  • Jonit Groovy/Java コンパイル
  • Spring Web Flow Integration
  • スコープサービスを許容するSpringスコープへのサポート
  • 自動XML/JSONマーシャリングとRESTful URLマッピングを伴い向上したRESTのサポート
  • コンベンションにより可能ではない設定用の新たなConfig DSL
  • 新しくなったインターフェースとブランディング
  • Sitemeshインラインデコレーターをサポート
  • コントローラがライブラリをメソッドとして呼び出し可能
  • 新たなGSPタグ
  • スタートアップタイムのスピード、ユニットテスト、ジェネレーションツールにおける大幅な改善

Spring Web Flow Integration

従来のXMLよりもむしろコード経由でSpringマネージビーンを定義する新たな方法をRod Johnsonが提案したように、GraemeはGroovyでSpring Web Flowを定義(サイト・英語)する前者に類似したアプローチを取っている。

showCart {
on("checkout").to "enterPersonalDetails"
on("continueShopping").to "showCatalogue"
}
enterPersonalDetails {
on("submit") {
def p = new Person(params)
flow.person = p
def e = yes()
if(p.hasErrors() || !p.validate())return error()
}.to "enterShipping"
on("return").to "showCart"
on(Exception).to "handleError"
}
enterShipping {
on("back").to "enterPersonalDetails"
on("submit") {
def a = new Address(params)
flow.address = a
if(a.hasErrors() || !a.validate()) return error()
}.to "enterPayment"
}

上記の一例はJBossSeamフレームワークで説明したように、作業ユニットか”対話”を定義する概念を描いている。Seamと同様に"フロー"には対話のステート情報を含んでいる。

オートマチックXML/JSON マーシャルとRESTful URLマッピング

以前はコンバージョン用にプラグインを使用していた一方、このリリースでは下記のものを使用している。

 import grails.converters.*
...

def list = {
render Book.list() as XML
// or render Book.list() as JSON
}
原文はこちらです:http://www.infoq.com/news/2007/09/grails06

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

BT

あなたのプロファイルは最新ですか?プロフィールを確認してアップデートしてください。

Eメールを変更すると確認のメールが配信されます。

会社名:
役職:
組織規模:
国:
都道府県:
新しいメールアドレスに確認用のメールを送信します。このポップアップ画面は自動的に閉じられます。