2009-11-13 1 views
4
GSP 페이지에서 예상대로이 작동

:.collect()가 다음 GString에서 작동하지 않는 이유는 무엇입니까?

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

그러나

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

으로 수집 문 코드 나누기 ..

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

를 추가 할 때 내가 인상이었다 어떤 유효한 Groovy 코드라도 GString ${ ... }에 놓을 수 있고 올바르게 평가/확장 될 수 있습니다. 내가 뭘 놓치고 있니?

답변

4

GSP 파서는 ${...} 블록 내에 }을 좋아하지 않습니다. 이 하나를 시도해보십시오 또는

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

감사합니다! <%= ... %>을 사용하면 문제가 해결되었습니다. 이 버그 또는 디자인에 의한 것입니까? – knorv

+0

이것은 의도적으로 설계된 것입니다. –

6

, 당신은 spread operator 사용할 수 있습니다

<td>${Foo.findAllByBar(bar)*.name}</td> 
관련 문제