在GSP上的Grails应用程序中循环问题

时间:2013-09-02 08:40:31

标签: grails for-loop

我目前正在开发一个grails应用程序,我遇到了一个循环存储在域中的一些对象的问题。下面你可以看到域名,我已经设置了一个模板,上面有2个选项。(选项1,选项2)

class Template {

    String name

    static hasMany = [options:Options]

    static constraints = {
        name blank: false
    }

}

现在,下面是我将此数据传递给视图进行处理的控制器:

def create() {

        def template = Template.get(1)
        [systemInstance: new System(params), template: template]

    }

最后我在GSP上使用了这个代码,这个代码应该通过针对这些数据存储的2个选项进行循环,然后如果检测到选项,我想要运行一些代码。但是,当我运行此代码时,我会遇到奇怪的行为:

        <%
            System.out.println 'option is: ' + option
        %>

        <g:if test="${option == 'Option1'}">

        <%
            System.out.println 'Inside the IF'
        %>

        </g:if>

当我运行此代码时,您可以看到我使用Print语句来查看我正在使用的数据。我没有获得值'Options1''Options2',而是获得以下内容:

option is: [
option is: O
option is: p
option is: t
option is: i
option is: o
option is: n
option is: 1
option is: ,
option is:  
option is: O
option is: p
option is: t
option is: i
option is: o
option is: n
option is: 2
option is: ]
option is: )

我还测试了下面的代码并返回'[Options1,Options2]':

<%
                System.out.println 'option is: ' + template.options.name
            %>

有人可以帮我这个非常奇怪。提前谢谢。


** * 修改 * < / EM> ****


每个循环的结果如下:

<g:each var="option" in="${ template.options.name })">

            <%
                System.out.println 'option is: ' + option
            %>

            <g:if test="${option == 'Option1'}">

            <%
                System.out.println 'Inside the IF'
            %>

            </g:if>

</g:each>

1 个答案:

答案 0 :(得分:1)

您的g:each标记中有一点类型。删除结束)

使用此附加括号,in属性中的变量是字符串:

"[Option1,Option2])"

所以你循环遍历字符串的字符而不是列表中的元素。

如果没有),变量将被处理为List的{​​{1}}。