通过g:每次迭代将值传递给输入

时间:2014-11-21 07:51:23

标签: grails groovy gsp

如果我有来自我的控制器的数据,我想将其传递给我的GSP

def test = [value: ['TEST1', 'TEST2', 'TEST3']]

在我的GSP中,我有以下

<g:set var="counter" value="${0}"/>
<g:set var="count" value="${count}"/>
<g:while test="${counter < count}">
    <g:set var="counter" value="${counter+1}"/>
    <g:each var='obj' in='${test}' status='i'>
        <g:textField id='justATest1' name='justATest' value='obj.value'>
        <g:textField id='justATest2' name='justATest' value='obj.value'>
        <g:textField id='justATest3' name='justATest' value='obj.value'>
    </g:each>
</g:while>

我想要它,以便justATest1将获得TEST1,justATest2将获得TEST2而justATest3将获得TEST3。

我如何实现这一目标?

2 个答案:

答案 0 :(得分:2)

假设您的模型包含以下内容

def myAction() {
    [value: ['TEST1', 'TEST2', 'TEST3']]
}

这应该这样做

<g:each status="i" in="${value}" var="item">
    <g:textField id="justATest${i}" name='justATest' value="${item}">
</g:each>

答案 1 :(得分:0)

好吧好像我设法在GSP中迭代对象

<g:each var='obj' in='${test}'>
    <g:each var='subObj' in='${obj.value}'>
        <p>${subObj}</p>
    </g:each>
</g:each>

但有点不够优雅。

我也可以这样做,就像Donal在他的回答中所说的那样

<g:each var='obj' in='${test.value}'>
    <p>${obj}</p>
</g:each>

但是如果我想分别和唯一地迭代测试对象中的每个项目,我认为这很难。

任何人都可以随意修复我的方法。