【问题标题】:Passing values to input through g:each iteration通过 g:each 迭代将值传递给输入
【发布时间】:2014-11-21 07:51:23
【问题描述】:

如果我有来自我的控制器的这些数据,我想将它传递给我的 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。

我怎样才能做到这一点?

【问题讨论】:

    标签: grails groovy gsp


    【解决方案1】:

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

    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>
    

    【讨论】:

    • 所以我接受如果说 test = [value1:['val1_a','val1_b','val1_c'], value2:['val2_a','val2_b','val2_c']],我可以将值用作 ${item.value[i]}?因为在我的控制器中,我会将对象传递给 GSP。
    【解决方案2】:

    好吧,看来我设法在 GSP 中迭代对象

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

    但有点不够优雅。

    我也可以这样做,正如多纳尔在他的回答中所说的那样

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

    但如果我想单独且唯一地迭代测试对象中的每个项目,我认为这会很困难。

    请随时修正我的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-08
      • 1970-01-01
      • 1970-01-01
      • 2016-10-13
      • 2016-05-16
      相关资源
      最近更新 更多