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
我无法让我的 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