我目前正在开发一个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>
答案 0 :(得分:1)
您的g:each
标记中有一点类型。删除结束)
。
使用此附加括号,in
属性中的变量是字符串:
"[Option1,Option2])"
所以你循环遍历字符串的字符而不是列表中的元素。
如果没有)
,变量将被处理为List
的{{1}}。