Grails 普惠制双重关闭失败

Grails 普惠制双重关闭失败,grails,closures,gsp,Grails,Closures,Gsp,在GSP文件中,我写了如下内容: ${tgs.singleGameSheets.find{it.matchnumber==1}.awayPlayer.fullname()} 但我收到以下错误: org.codehaus.groovy.control.multipleCompationerErrorSexception: 启动失败: C_uuSts_uProjekte_uTischtenisManager_uGrails_uApp_uViews_uLeague_uShowGamesheet_uG

在GSP文件中,我写了如下内容:

${tgs.singleGameSheets.find{it.matchnumber==1}.awayPlayer.fullname()}
但我收到以下错误:

org.codehaus.groovy.control.multipleCompationerErrorSexception: 启动失败: C_uuSts_uProjekte_uTischtenisManager_uGrails_uApp_uViews_uLeague_uShowGamesheet_uGSP: 49:在第49行第134列中,应为“}”,而在第134列中应为“}”。 heets.find{it.matchnumber==1})

问题似乎是双重关闭,因为我发现了一个bug报告

不幸的是,bugreport中的解决方案在标记的开头和结尾都有
%=
%
,对我来说不起作用

对于这个双重闭包问题,还有其他解决方法吗


我使用的是Grails1.3.7。

您可能需要将其分成两行

首先尝试将查找结果分配给单独的变量

<% def r = tgs.singleGameSheets.find{it.matchnumber==1} %>
${r*.awayPlayer.fullname()}

${r*.awayPlayer.fullname()}

我建议首先在控制器中进行此类数据处理,并将尽可能准备好的数据交给视图

如果您无法做到这一点,我建议尝试使用括号:

${tgs.singleGameSheets.find{it.matchnumber==1}.awayPlayer.fullname()}
变成

${(tgs.singleGameSheets.find{it.matchnumber==1}.awayPlayer.fullname())}

在过去的一些情况下,我必须执行
${(someCollection.findAll{someClause}}}

很好,它可以工作,但是没有'r*'中的*in,因为“find”返回单个对象,而不是列表。谢谢!酷-抱歉,我习惯于更频繁地处理findAll,并且*是我的默认击键:)