Grails控制器中的子对象数据绑定

Child object data binding in Grails controller

本文关键字:对象 数据绑定 控制器 Grails      更新时间:2023-09-26

我试图设置一个javascript对象,这样当它的数据绑定到控制器中的新对象时,数据库中相关的子对象根据id字段被拉出。这在Spring数据绑定中是这样记录的:

数据绑定和关联

如果您有一个一对一或多对一的关联,您可以使用Grails的数据绑定功能也可以更新这些关系。为例如,如果您有一个传入请求,如:

/书/保存? author.id = 20

Grails将自动检测请求中的.id后缀参数,并在执行时查找Author实例以查找给定的id数据绑定,如:

def = new Book(params)

我想发布一个javascript对象到控制器作为一个完全组合的对象与子属性。我如何设置javascript对象,使控制器看到对象的子属性如下url(与文档相同)/book/save?author.id=20

我试过这个,但它似乎不工作:

var childObject= function(name, id) {
                this.name = name;
                this.id = id;    
            };
var viewModel = {
    id: 1,
    child: new childObject("Chuck",1)
 }

控制器没有看到'child '。当viewModel被发送到控制器并自动获取相关记录时。我想得太离谱了吧?

也许另一种方式来问这是我如何序列化一个javascript对象,使其字符串表示是"object.property"?

将javascript对象创建为{child:{id:1}}应该可以实现您想要实现的目标。尝试这样创建所需的js对象

     var dataObj = {};
     var childObj = {};
     childObj['id'] = 1;
     dataObj['child'] =  childObj;
     return dataObj;