Двойное закрытие не удается в GSP

В файле GSP я пишу что-то вроде этого:

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

Но я получаю следующую ошибку:

org.codehaus.groovy.control.MultipleCompilationErrorsException: сбой запуска: C__STS_Projekte_TischtennisManager_grails_app_views_league__showGameSheet_gsp: 49: ожидание '}', найдено ')' @ line 49, столбец 134. столбец 134. heets.fumber {.

Кажется, проблема в двойном закрытии, так как я нашел здесь сообщение об ошибке.

К сожалению, решение из сообщения об ошибке с %= а также % в начале и конце тега не работает для меня.

Есть ли другие обходные пути или решения для этой проблемы двойного замыкания?

Я использую Grails 1.3.7.

2 ответа

Решение

Возможно, вам придется разделить это на две строки.

Попробуйте сначала назначить результаты поиска отдельной переменной

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

Я бы порекомендовал, во-первых, выполнить этот вид обработки данных в контроллере и передать данные, которые как можно лучше подготовлены вплоть до представления.

Если вы не можете сделать это, я бы порекомендовал использовать скобки:

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

становится

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

Это работало для меня в прошлых случаях, когда я должен был сделать ${(someCollection.findAll { someClause })}

Другие вопросы по тегам