我是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}变量?
任何帮助都将不胜感激。
由于
数。
答案 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