数据绑定是将request提交的参数“绑定”到一个对象的属性或者一个完整的对象的行为。数据绑定将处理所有来自请求参数必要的类型装换,典型的传送通过表单提交 , 参数类型始终是字符串,尽管Groovy或Java对象的属性可能不一定是字符串。
方式一:
def save={
def b = new Book(params)
b.save()
}
方式二:
def save={
def b = Book.get(params.id)
b.properties = params
b.save()
}
假如有个请求:/book/save?book.title=The%20Stand&author.name=Stephen%20King
方式三:
def b = new Book(params['book'])
def a = new Author(params['author'])
方式四:
def p = Person.get(1)
p.properties['firstName','lastName'] = params
这种情况下,只有firstName和lastName被绑定
方式五:
使用bindData方法
def p = new Person()
bindData(p, params) //将params绑定到对象p上
bindData(p, params, [exclude:'dateOfBirth']) //将params中除了dateOfBirth之外的属性绑定到对象p
bindData(p, params, [include:['firstName','lastName]]) //只绑定params的firstName和lastName属性刀对象p
类型转换
数据绑定时,经常会遇到类型转换的情况,Grails1.2.2提供了一种简单的方式进行转换
def total = params.int('total')
grails将total自动转换为int绑定到total变量。除了int方法外,Grails1.2.2还提供了boolean, long
, char
, short等方法。这些方法都进行了null安全和解析时的安全转换,所以不用进行额外的检查。
以上方法还支持GSP的标签库参数。