2013-10-18 66 views
0

我對Grails相當陌生,我想了解如何使用計數器變量作爲索引來解析某種形式的「參數」與控制器?解析具有「變量」索引的Grails參數

我有一個表格:

<g:form controller="config" action="parseReports"> 
<div> 
<g:each in="${allReports.toList()}" var="each" > 
<g:hiddenField name="reportName${allReports.indexOf(each)}" value="${each}" /> 
</g:each> 
<g:hiddenField name="reportCountSize" value="${allReports.size()}" /> 

...

隨着一些隱藏的變數。

在控制器中,我有:

def reportCount = params.reportCountSize.toInteger()` 

def reportCount0 = params.reportCount0.name.toString()` 

這工作得很好。

我想知道如何使用循環/索引:

for (counter in 0..reportCount) {` 
    def myReport = "${params}.reportCount${counter}.name.toString()}"` 

....

我不能找出如何讓myReport得到params.reportCount0的形式價值.name.toString(),但使用$ {counter}變量?

任何幫助,將不勝感激。

謝謝

英里。

回答

3

嘗試這cotroller。

for (counter in 0..reportCount - 1) { 
     String report = params["reportName${counter}"] 
     println "==${counter}===${report}=====" 
} 

也應該使用GSP頁面上的每個循環這樣的..

<g:each in="${allReports.toList()}" var="each" status="i" > 
    <g:hiddenField name="reportName${i}" value="${each}" /> 
</g:each> 

享受。

+0

def reportName = params [「reportName $ {counter}」]。toString()謝謝:O)第二天就明晰了..... – chocksaway

+1

你可以upvote這個答案? – user1791574

0

params是一個地圖,所以你可以把它當作Groovy String中的那個。

def params = [id:1234, id0:2345, id1:345] 

for (counter in 0..1) { 
    print "\n${params.get('id' + counter)}" 
} 

結果:

2345 
345 

不過,我可能會建議你檢查了這一點:Grails indexed parameters