我无法让我的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。
答案 0 :(得分:1)
看起来好像你正在使用Map
,你需要确保Groovy理解你不希望回收一组值。因此,请使用以下内容:
topInstance.sections['sectionA'].subSection.id