用“可变”索引解析Grails params

时间:2013-10-18 18:03:19

标签: parsing grails groovy params

我是Grails的新手,我想了解如何用控制器解析某些形式的“params”,使用计数器变量作为索引?

我有一张表格:

<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}变量?

任何帮助都将不胜感激。

由于

数。

2 个答案:

答案 0 :(得分:3)

在控制器中试试。

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

你也应该在jsp页面上使用你的每个循环。

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

享受。

答案 1 :(得分: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