0

我目前正在开发一个 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
            %>

有人可以帮我解决这个问题,因为它很奇怪。提前致谢。


** *编辑* ****


for each 循环如下:

<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>
4

1 回答 1

1

您的g:each标签中有一个小类型。删除关闭)

有了这个额外的括号,in属性中的变量就是字符串:

"[Option1,Option2])"

因此,您正在循环遍历字符串的字符而不是列表的元素。

如果没有该变量,)将从 开始处理ListStrings

于 2013-09-02T09:36:58.490 回答