Grails 0.6 Adds Best of Breed Mix From Spring Web Flow and Rich Conversations a la JBoss
- Joint Groovy/Java Compilation
- Spring Web Flow Integration
- Support for Spring scopes to allow scoped services
- Improved support for REST with automatic XML/JSON marshalling and RESTful URL mappings
- New Config DSL for configuration not possible by convention
- Refreshed scaffolding interface and branding
- Support for Sitemesh inline decorators
- Controllers can now call tag libraries as methods
- New GSP tags
- Massive improvements to speed of start-up time, unit tests and generation tool
Spring Web Flow Integration
Just as Rod Johnson had proposed a new way of defining Spring-managed beans via code rather than the traditional XML markup, Graeme takes a similar approach by defining Spring Web Flow definitions with Groovy:
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"
}
The above snippet illustrates the concept of defining a unit of work or "conversation", as described in the JBoss Seam framework. Just as in Seam, the "flow" contains conversational state information.
Automatic XML/JSON marshalling and RESTful URL mapping
While previously using a plug-in for conversions, this release uses:
import grails.converters.*
...
def list = {
render Book.list() as XML
// or render Book.list() as JSON
}
Seam
by
Martin Gilday
Educational Content
Writing Usable APIs in Practice
Giovanni Asproni May 19, 2013
Concurrency in Clojure
Stuart Halloway May 17, 2013
Confessions of an Agile Addict
Ole Friis Østergaard May 16, 2013





Hello stranger!
You need to Register an InfoQ account or Login to post comments. But there's so much more behind being registered.Get the most out of the InfoQ experience.
Tell us what you think