Gorm Findallby dentro da dúvida do GSP
Pergunta
Alguém pode me dizer por que isso funciona
<g:each var="n" in="${com.pp.News.list()}">
<h2>${n.t}</h2>
<p>${n.tx}</p>
</g:each>
Mas isso não?
<g:set var="news" value="${com.pp.News.findAllByShow(true,[sort:'prio', order:'desc',max:5])}" />
<g:each var="n" in="news">
<h2>${n.t}</h2>
<p>${n.tx}</p>
</g:each>
Parte da exceção é
Exception Message: No such property: t for class: java.lang.String
Como posso fazer funcionar?
Obrigado
Solução
Mudar
<g:each var="n" in="news">
para
<g:each var="n" in="${news}">
Você está iterando "Notícias" em vez do resultado retornado na notícia VAR.
Outras dicas
Você deve fazê-lo funcionar colocando o código não UI no controlador ou um serviço e passando os dados para as visualizações no modelo. É uma idéia muito ruim fazer o trabalho de banco de dados ou outra lógica de negócios em um GSP/JSP/etc. O MVC é sobre separar preocupações.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow