2015-08-28 23 views
0

我無法讓我的Groovy-Grails GSP在AJAX g:submitToRemote調用中傳遞一個ID,而無需在ID周圍注入不需要的編碼方括號。GSP g:submitToRemote調用注入周圍不需要編碼的方括號ID

我有一個頂級域名Top,它包含一個Section類的Map,名爲sections,每個Section都包含一個SubSection。

我需要通過g:submitToRemote調用將SubSection的ID傳遞迴服務器。

我可以用下面的,其中「部1.」是地圖的實際字符串鍵顯示在GSP分段ID:

${topInsatance.sections.sectionA.subSection.id} 
在我的例子

因此,該ID是122

造成不好的POST
<g:submitToRemote url="[action:'update', id: topInsatance.sections.sectionA.subSection.id ]" value="Update"> 

.../update%5B122%5D 

只是作爲一個實驗,我試圖通過只是topInstan ce.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」鍵的部分被添加到頂部實例部分Map中。

+0

「sections」是您的域類的集合嗎?如果是這樣,那麼括號就在那裏。 –

+0

是的,章節是一個集合(Map),但是我引用了一個特定的'sectionA',並獲取它的子部分ID。 (每個部分只有一個子部分。)如何防止括號插入? – J21042

+0

可能與問題無關,但爲什麼在'topInsatance.sections.'sectionA'.subSection.id'中爲'sectionA'引用了引號? –

回答

1

這似乎是因爲你正在使用Map你需要確保Groovy明白你不希望返回一個值的集合。因此,請使用以下內容:

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