Json Grails从不';t映射到特定域

Json Grails从不';t映射到特定域,json,rest,grails,Json,Rest,Grails,Grails2.4.2 我有一个UserController,在它的save方法中,我需要传入一个组织ID和用户数据,这样我就可以找到该组织,然后创建多对多关系。所以我有这样的东西 def save(User user) { def orgExternalId = request.JSON.orgExternalId userService.save(user, orgExternalId) // more boilerplate } 我正在发布以下json: {

Grails2.4.2

我有一个UserController,在它的save方法中,我需要传入一个组织ID和用户数据,这样我就可以找到该组织,然后创建多对多关系。所以我有这样的东西

def save(User user) {
    def orgExternalId = request.JSON.orgExternalId
    userService.save(user, orgExternalId)
    // more boilerplate
}
我正在发布以下json:

{ 
  "orgExternalId" : "123445", 
  "firstName": "gregg", 
  "lastName": "bolinger",
  "username": "gdboling"
}
但是,我并没有从控制器中的JSON中获取orgExternalId。另外,如果我检查JSON,它是空的,但是用户域填充正确。我现在的假设是,我将不得不使用一个命令对象,或者我可以将orgExternalId放在标题中,但我想知道是否还有其他方法。

看一看。主要是:

请注意,正在解析请求主体以使其工作。 此后读取请求正文的任何尝试都将失败,因为 相应的输入流将为空。控制器动作 可以使用命令对象,也可以分析 单独请求(直接请求或通过引用 JSON),但不能同时执行这两项操作


在添加答案作为注释时,我不确定是否会找到这句话。:)

我很困惑,您显示了一些带有“orgExternalId”的JSON:“123445”,但当您检查JSON时,您会说“orgExternalId为空…”。。。JSON不会消失,或者你没有发布JSON,或者它在某处被修改……这两个都是真的。我认为grails在自动填充用户时可能会清空JSON对象。但目前无法证实这一点。我知道我正在发送它,并且该用户包含来自JSON其余部分的所有适当值。在控制器操作的顶部尝试
log.debug“JSON=${request.JSON}
,返回为[:]。如果将域类用作命令对象,则无法再从请求中获取JSON。请求有效负载现在已作为数据绑定的一部分读取,并且有效负载已从
请求中删除。检索到额外的有效负载部分后,可以手动尝试绑定。这很有意义。I错过了,谢谢!