GSP g:submitToRemote 调用在 ID 周围注入不需要的编码方括号

GSP g:submitToRemote call injecting unwanted encoded square brackets around ID

我无法让我的 Groovy-Grails GSP 在 AJAX g:submitToRemote 调用中传递 ID,而不在 ID 周围注入不需要的编码方括号。

我有一个顶级域 class,Top,其中包含部分 classes 的地图,称为部分,每个部分包含一个子部分。

我需要在 g:submitToRemote 调用中将 SubSection 的 ID 传回服务器。

我可以使用以下代码在 GSP 上显示 SubSection ID,其中 'sectionA' 是地图的实际字符串键:

${topInsatance.sections.sectionA.subSection.id}

因此在我的示例中,ID 为 122。

<g:submitToRemote url="[action:'update', id: topInsatance.sections.sectionA.subSection.id ]" value="Update">

导致不好POST:

.../update%5B122%5D

作为实验,我尝试只传递 topInstance.id,在我的示例中为 116:

<g:submitToRemote url="[action:'update', id: topInsatance.id ]" value="Update">

结果不错POST:

.../update/116

格式正确,但ID错误。我需要小节 ID。

我也试过:

<g:set var="subSection" value= "${topInsatance.sections.sectionA.subSection}" />

然后:

<g:submitToRemote url="[action:'update', id: subSection.id ]" value="Update">

导致不好POST:

.../update%5B122%5D

我也试过:

<g:set var="subSectionId" value= "${topInsatance.sections.sectionA.subSection.id}" />

然后:

<g:submitToRemote url="[action:'update', id: subSectionId ]" value="Update">

导致不好POST:

.../update%5B122%5D

所以无论我尝试什么,它总是将编码的括号放在 subSectionId 周围。

为什么

topInsatance.id 

工作,但是

subSection.id
subSectionId

不工作?

参考:What does %5B and %5D in POST requests stand for?

编辑:添加有关域 classes 的更多信息。顶级域 class 是:

class Top {
  Map sections
  static hasMany = [ sections: Section ]
  ...
}

class Section {
  SubSection subSection  // only one
  static belongsTo = [ top: Top ]
  ...
}

class SubSection {
  // some content
}

当应用程序运行时,键为 "sectionA" 的部分会添加到 Top 实例部分映射中。

似乎因为您使用的是 Map,所以您需要确保 Groovy 理解您不期望返回值集合。因此,使用以下内容:

topInstance.sections['sectionA'].subSection.id