2010-03-22 10 views
2

quelqu'un peut me dire pourquoi cela fonctionneGorm findAllBy intérieur doute gsp

<g:each var="n" in="${com.pp.News.list()}"> 
<h2>${n.t}</h2> 
<p>${n.tx}</p> 
</g:each> 

mais cela ne fonctionne pas?

<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> 

Une partie de l'exception est

Exception Message: No such property: t for class: java.lang.String 

Comment puis-je le faire fonctionner?

Merci

Répondre

5

changement

<g:each var="n" in="news"> 

à

<g:each var="n" in="${news}"> 

Vous itérez "nouvelles" au lieu du résultat retourné dans les nouvelles var.

3

Vous devriez le faire fonctionner en mettant le code non interface utilisateur dans le contrôleur ou un service, et de transmettre les données aux vues du modèle. C'est une très mauvaise idée de faire un travail de base de données ou une autre logique métier dans un GSP/JSP/etc. MVC consiste à séparer les préoccupations.

+0

Merci pour la réponse. MVC est ma façon préférée de travailler, mais dans ce cas, ce code va dans un modèle, donc il y a plusieurs contrôleurs d'appel et je ne veux pas remplir la liste dans chacun d'entre eux. – xain