gpt4 book ai didi

spring - 设置 knockoutJS View 模型以绑定(bind)到一对多属性

转载 作者:行者123 更新时间:2023-12-02 14:55:16 25 4
gpt4 key购买 nike

我在 grails 中有一个 Controller ,我正在向它发送一个带有 knockoutJS View 模型的 ajax JSON 帖子。 View 模型(连同一个 javascript 对象)如下所示:

var childProperty= function(name, id) {
this.name = name;
this.id = id;
};

//KnockoutJS - Main view model
var viewModel = {
id: ko.observable(1),
childProperty: ko.observable(new childProperty("Chuck",1))
}

Controller 端的数据模型试图自动使用 Spring 绑定(bind)魔法并将 JSON 请求参数绑定(bind)到我的数据模型的新实例,如下所示:
def jUpdate = {
def update = new SomeObject(params)
}

当我希望 Spring 绑定(bind)检测到 childProperty.id 是数据模型中的一对多关系并去获取数据模型中的相关属性时,问题就出现了。 Grails 文档是这样说的:

Data binding and Associations

If you have a one-to-one or many-to-one association you can use Grails' data binding capability to update these relationships too. For example if you have an incoming request such as:

/book/save?author.id=20

Grails will automatically detect the .id suffix on the request parameter and look-up the Author instance for the given id when doing data binding such as:

def b = new Book(params)



我正在使用 ko.toJS 实用程序函数,并且简单的属性绑定(bind)正确。如何设置 View 模型子属性,以便在将其发布到 grails Controller 时,Spring 可以正确检测到它并获取关联的记录并构建对象?

最佳答案

我永远无法让自动 Spring 绑定(bind)工作,所以我只是传递了子对象的 id 并在 params 映射中的服务器端手动设置它们。之后,GORM 会适本地获取记录。像这样的东西:

def update = {
params.put("childObject.id",params.childObjectId)
params.remove("childObjectId")

def parentObject = new ParentObject(params)
}

这会获取相关项目并构建对象。如果你有很多相关的领域,这将成为一个痛苦的过程。

关于spring - 设置 knockoutJS View 模型以绑定(bind)到一对多属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8515412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com