为什么.collect()不在以下GString中工作?

时间:2009-11-13 13:23:36

标签: grails groovy gsp gstring

这在GSP页面中按预期工作:

<td>${Foo.findAllByBar(bar)}</td>

但是当添加一个collect语句时,代码会中断..

<td>${Foo.findAllByBar(bar).collect { it.name }}</td>

Error 500: Could not parse script [...gsp]: startup failed,
     ...: 129: expecting '}', found ')'
     @ line 129, column 196. 1 error`.

我的印象是,任何有效的Groovy代码都可以放在GString ${ ... }中并正确评估/扩展。我错过了什么?

2 个答案:

答案 0 :(得分:6)

或者,您可以使用spread operator

<td>${Foo.findAllByBar(bar)*.name}</td>

答案 1 :(得分:4)

GSP解析器不喜欢}块中的${...}。试试这个:

<%= Foo.findAllByBar(bar).collect { it.name } %>