0

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

任何帮助,将不胜感激。

谢谢

迈尔斯。

4

2 回答 2

3

在控制器中试试这个。

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>

享受。

于 2013-10-19T05:57:09.007 回答
0

params 是一个映射,因此您可以像在 Groovy 字符串中那样对待它。

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

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

结果是:

2345
345

但是,我可能会建议您检查一下:Grails indexed parameters

于 2013-10-18T18:32:56.567 回答