Grails - 使用 JSON 启动域类
Posted
技术标签:
【中文标题】Grails - 使用 JSON 启动域类【英文标题】:Grails - Initiating domain class using JSON 【发布时间】:2013-02-10 14:54:01 【问题描述】:我有这个简单的域类:
class Settings
static constraints =
uid(nullable: false, unique: true)
person()
String uid
Map person
以及使用 json 请求更新数据的 Web UI:
"uid":1234 , person:"first_name" : "jhon" , "last_name" : "doe"
在控制器代码中:
def json = request.JSON;
def s = new Settings(json);
似乎 s.uid 正在设置,但 s.person 地图仍然为空。 我错过了什么?
【问题讨论】:
这可能是一个 Grails 错误jira.grails.org/browse/… 【参考方案1】:您可以在控制器中执行以下操作:
def json = request.JSON;
def s = new Settings(json);
s.person = json.person;
它很丑,但是数据绑定似乎无法处理嵌套的 json
【讨论】:
感谢回复……这很奇怪,我会固执的继续寻找解决方案【参考方案2】:如果你想让它工作,你需要将你的结构转换成这个:
"uid":1234 , "person.first_name": "jhon" , "person.last_name": "doe"
【讨论】:
感谢您的回复,但是 UI JSON 是给定的,无法更改。我确信有一个更流畅的解决方案:)【参考方案3】:如果你在实例化设置之前加上这行,会递归绑定。
JSON.use('deep')
【讨论】:
以上是关于Grails - 使用 JSON 启动域类的主要内容,如果未能解决你的问题,请参考以下文章