Почему .collect () не работает в следующей GString? - PullRequest
4 голосов
/ 13 ноября 2009

Это работает, как и ожидалось, на странице GSP:

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

Но при добавлении оператора сбора код прерывается ..

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

6 голосов
/ 13 ноября 2009

В качестве альтернативы вы можете использовать оператор распространения :

<td>${Foo.findAllByBar(bar)*.name}</td>
4 голосов
/ 13 ноября 2009

Парсер GSP не любит } в блоке ${...}. Попробуйте это:

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