[url=http://docs.codehaus.org/display/GRAILS/1.0-RC2+Release+Notes]Grails 1.0-RC2 发布[/url],看到新增不少功能,心中窃喜啊 :D
现在简介一下主要变动:
[list][*]移植到最新的spring2.5
[*]新的参考文档
[url=http://grails.org/doc/1.0.x]去官方文档[/url],个人感觉挺舒服的,而且也很有条理
[*] 内容协商(ContentNegotiation)支持
Grails现在可以通过Accept/Content-Type HTTP headers, a parameter or URI 扩展来提供支持,其MIME类型可以在Config.groovy配置
那么在处理这个请求的时候,可以使用withFormat方法:
[*] 自动从XML/JSON中构建对象
基于XML/JSON的请求现在可以通过params自动的构造对象,如以下XML请求:
那在controller中可以这样使用:
[*] 支持自定义外键字段的映射和JoinTable
Grails的GORM DSL现在已经支持外键字段的映射和Join Table,比如要改变one-to-one的外键可以这样做:
你也可以单向的one-to-many或者many-to-many关联的join table和columns,比如:
[/list]
现在简介一下主要变动:
[list][*]移植到最新的spring2.5
[*]新的参考文档
[url=http://grails.org/doc/1.0.x]去官方文档[/url],个人感觉挺舒服的,而且也很有条理
[*] 内容协商(ContentNegotiation)支持
Grails现在可以通过Accept/Content-Type HTTP headers, a parameter or URI 扩展来提供支持,其MIME类型可以在Config.groovy配置
grails.mime.types = [ html: ['text/html','application/xhtml+xml'],
xml: ['text/xml', 'application/xml']
// etc.
]
那么在处理这个请求的时候,可以使用withFormat方法:
def list = {
def results = Book.list()
withFormat {
html bookList:result
xml { render results as XML }
}
}
[*] 自动从XML/JSON中构建对象
基于XML/JSON的请求现在可以通过params自动的构造对象,如以下XML请求:
<book>
<title>The Stand</title>
<author>Stephen King</author>
...
</book>
那在controller中可以这样使用:
def save = {
def b = new Book(params['book'])
if(b.save()) {
// deal with book
}
}
[*] 支持自定义外键字段的映射和JoinTable
Grails的GORM DSL现在已经支持外键字段的映射和Join Table,比如要改变one-to-one的外键可以这样做:
class Book {
Author author
static mapping = {
columns {
author column:'auth_id'
}
}
}
你也可以单向的one-to-many或者many-to-many关联的join table和columns,比如:
class Author {
static hasMany = [books:Book]
static mapping = {
columns {
books joinTable:[name:'authors_books', key:'book_id', column:'author_id']
}
}
}
[/list]