Grails FindAllWhere с переменными

Я пытаюсь сделать findAllWhere в gsp grails, передавая две переменные: одну, которая является атрибутом, и другую, которая является значением, которое я хочу, чтобы этот атрибут был равен. IE (автор: Марк Твен) Я не могу понять синтаксис, и ошибка, которую я получаю, не помогает.

${Application.findAllWhere((${group1}): ${group})}

Group1 — это переменная, переданная из контроллера, а group — это переменная из g:each. Вот ошибка.

Error 500: 
Servlet: default
URI: /archetype/application/applicationPortfolio/GroupLangTechOwn  
Exception Message: No signature of method:
C__projects_Archetype_grails_app_views_application_applicationPortfolio_gsp.$() is  
applicable for argument types: 
(C__projects_Archetype_grails_app_views_application_applicationPortfolio_gsp$_run_closure2_closure56_closure144) values: [C__projects_Archetype_grails_app_views_application_applicationPortfolio_gsp$_run_closure2_closure56_closure144@239dbdd6] Possible solutions: is(java.lang.Object), run(), run(), any(), use([Ljava.lang.Object;), any(groovy.lang.Closure) 
Caused by: Error processing GroovyPageView: No signature of method: C__projects_Archetype_grails_app_views_application_applicationPortfolio_gsp.$() is applicable for argument types: (C__projects_Archetype_grails_app_views_application_applicationPortfolio_gsp$_run_closure2_closure56_closure144) values: [C__projects_Archetype_grails_app_views_application_applicationPortfolio_gsp$_run_closure2_closure56_closure144@239dbdd6] Possible solutions: is(java.lang.Object), run(), run(), any(), use([Ljava.lang.Object;), any(groovy.lang.Closure) 
Class: applicationPortfolio.gsp 
At Line: [631] 

Спасибо!


person Daniel Langer    schedule 18.07.2012    source источник
comment
Также получаю эту ошибку: не знаю, почему она изменилась. Сообщение об исключении: сбой при запуске: C__projects_Archetype_grails_app_views_application_applicationPortfolio_gsp: 280: неожиданный токен: printHtmlPart @ строка 280, столбец 1. printHtmlPart (77) ^ 1 ошибка   -  person Daniel Langer    schedule 19.07.2012
comment
Откуда берутся 2 переменные? Я не думаю, что вам нужно помещать их между ${}, когда весь вызов метода уже находится между набором ${}. Попробуйте просто ${Application.findAllWhere((group1): group)}. Наверное, и () вокруг group1 тоже не нужны.   -  person Weezle    schedule 19.07.2012
comment
Не имеет отношения к проблеме — не выполняйте вызовы базы данных из GSP. Это не PHP ffs.   -  person Burt Beckwith    schedule 19.07.2012


Ответы (1)


Попробуйте упростить до: ${Application.findAllWhere(group: group)} как указал Weezle

Но обычно лучше поместить это в контроллер и вернуть, например:

class MyContoller {

def myAction() {
   [appList: Application.findAllWhere(group: group)]
}

myAction.gsp 

${appList}

<g:each var="app" in="${appList}">
  ${app.id} -  ${app.name}
</g:each>
person Steve    schedule 18.07.2012