Grails 普惠制双重关闭失败
在GSP文件中,我写了如下内容: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
${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,并且*是我的默认击键:)