У меня есть этот контроллер:
def participated = {
def user = User.get(1)
def temp = ConferenceUser.findAllByUser(user)
def prizes = Prizes.list()
[temp: temp, prizes: prizes]
//redirect(action: "participated", params: params)
}
А это gsp view:
<g:each in="${temp}">
<li>Date: ${it.dateParticipated}, <br>Role: ${it.role}, <br>Acceptence: ${it.accepted}, <br>
<g:link controller="conference" action="participated" params="[temp: it.conference.id]">
Conference: </g:link>${it.conference},<br>
Status: ${it.status}</li><br>
<g:each in="${prizes.findAllByConferenceUser(temp.id)}"> ########
PrizeName: ${it.name}
</g:each>
<br>
</g:each>
Что я хочу сделать, так это то, что после печати всех нужных мне объектов ConferenceUser мне необходимо распечатать все выигранные призы с этим идентификатором conferenceUser. Где ##, там моя проблема. Я не знаю, как это сделать в контроллере, потому что «temp» дает мне все ConferenceUser, отфильтрованные пользователем. Но мне также нужны все выигранные призы, отфильтрованные по идентификатору конференции. Итак, я передал в контроллере темп (который представляет все конференции с идентификатором пользователя = 1) и передал все выигранные призы, чтобы отфильтровать их во втором теге «каждый». Но этот способ не работает, потому что, как и сейчас, temp.id представляет несколько идентификаторов (как показано в ошибках). Любая помощь, пожалуйста? Как я могу получить идентификатор, который используется в тот момент в каждом первом теге?
Error 500: Error evaluating expression [prizes.findAllByConferenceUser(temp.id)] on line [44]: groovy.lang.MissingMethodException: No signature of method: java.util.ArrayList.findAllByConferenceUser() is applicable for argument types: (java.util.ArrayList) values: [[50, 51, 52, 53, 54, 55, 57]]
Servlet: grails
URI: /CM/grails/conferenceUser/participated.dispatch
Exception Message: No signature of method: java.util.ArrayList.findAllByConferenceUser() is applicable for argument types: (java.util.ArrayList) values: [[50, 51, 52, 53, 54, 55, 57]]
Caused by: Error evaluating expression [prizes.findAllByConferenceUser(temp.id)] on line [44]: groovy.lang.MissingMethodException: No signature of method: java.util.ArrayList.findAllByConferenceUser() is applicable for argument types: (java.util.ArrayList) values: [[50, 51, 52, 53, 54, 55, 57]]
Code Snippet: