GSP g:submitToRemote调用在ID

时间:2015-08-28 15:54:22

标签: ajax grails gsp

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

我有一个顶级域类Top,它包含一个Section类的Map,称为sections,每个Section包含一个SubSection。

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

我可以使用以下内容在GSP上显示SubSection ID,其中'sectionA'是Map的实际String键:

${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错误。我需要subSection 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?

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

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。

1 个答案:

答案 0 :(得分:1)

看起来好像你正在使用Map,你需要确保Groovy理解你不希望回收一组值。因此,请使用以下内容:

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