将请求参数绑定到Filter中的域对象

时间:2014-03-31 16:44:03

标签: grails data-binding

我想将请求参数绑定到域对象,以便我可以在几个控制器和操作中添加域对象的更新。

在这一点上工作:

def addEditBeerCommand = new AddEditBeerCommand()

Map carParams = params.findAll {
     (
     AddEditBeerCommand.metaClass.hasProperty(addEditBeerCommand, it.key) 
     &&  
     !( it.key in ["tastingDate", "price"])
     )
}

addEditBeerCommand = new AddEditBeerCommand(carParams)

但是我必须处理 tastingDate (字符串到日期的转换)和价格(字符串到双倍),有没有办法我可以利用grails数据绑定?

2 个答案:

答案 0 :(得分:1)

documentation非常完整,详细介绍了Grails中可用于数据绑定的所有选项。有很多选项可用于自定义绑定,文档的这一部分(以及所有其余部分)值得一读。我相信你会找到你所需要的。

根据您的意见,使用bindObjectToInstance显示您正在寻找的内容。

答案 1 :(得分:1)

import static org.codehaus.groovy.grails.web.binding.DataBindingUtils.bindObjectToInstance

...

def filters = {
    namedFilter(controller:"myController", action: "myAction") {
        // request params are available as params property of the filter class
        def cmd = new SomeCommandObject()
        bindObjectToInstance(cmd, params) 
    }
}