bindData包含嵌套的params

时间:2015-08-12 15:29:29

标签: grails data-binding

鉴于以下类别:

简化示例:

class Query {
    Institution institution
}

class Institution {
    String name
}

提交以下参数:query.institution.id=20query.institution.name=Example

我想只包含机构ID,并忽略绑定到查询机构实例的名称。

bindData是否可以显式包含嵌套多个级别的关联实例?

除了使用单一嵌套级别的前缀之外,我还没有看到任何这样的例子,以下似乎不起作用:

简化示例:

bindData(queryInstance, params, [include: [
    'institution.id',
]], 'query')

1 个答案:

答案 0 :(得分:0)

最佳做法是通过命令对象过滤您的请求参数,然后可以使用命令对象生成任何类型的查询。

Command cmd = Command.getInstance()
bindData(cmd, request.params)
if (cmd.validate()) Query query = cmd.generateQuery()

通过这种方式,您可以获得仅绑定到您在命令对象上公开的字段的好处,同时验证和转换传入数据而不涉及您的域。