Question

Je les classes de domaine suivants:

class User = {
       String username
       ... 
       Company company
 }

class Company {
    String name
    ...
}

C'est, il y a une relation n: 1 entre l'utilisateur et l'entreprise. Ces classes sont si et je ne peux pas les changer.

Au show.gsp je veux avoir les détails de la société ainsi que des liens vers les utilisateurs qui appartient à cette société.

Je sais que je peux y parvenir à écrire un tag propre, mais je suis sûr que ce serait possible en utilisant la chaque balise ou findAll balise .

Si je fais ce qui suit

<g:each in="${User.findAll('from User order by username')}" var="userInstance">
    <li><g:link controller="role" action="show"
         id="${userInstance.id}">${userInstance.encodeAsHTML()}</g:link>
   </li>
</g:each>

J'ai essayé de passer le $ {} companyInstance comme paramètre, mais soit je suis une exception ou il ne fonctionne pas.

J'ai aussi essayé d'utiliser User.findAllByCompany .

Lorsque vous utilisez:

<g:findAll in="${user}" expr="it.company == ${companyInstance}  ">

Je reçois un ensemble vide.

Y at-il un moyen facile d'y parvenir sans écrire une taglib?

Merci d'avance.

Luis

Était-ce utile?

La solution

La balise <g:findAll> itère sur une liste d'objets, mais il n'interroge pas le DB fait avec User.findAll(..)

Le code est:

<g:each in="${User.findAll('from User as u where u.company=:company order by username', [company: companyInstance])}" var="userInstance">
    <li><g:link controller="role" action="show"
         id="${userInstance.id}">${userInstance.encodeAsHTML()}</g:link>
   </li>
</g:each>

Si vous voulez absolument utiliser g: findAll, vous devez d'abord construire la liste des utilisateurs comme suit:

<% def users = User.listOrderByUsername()%>
<g:findAll in="${users}" expr="it.company == ${companyInstance}  "> 

J'espère que cela aide,

Cordialement,

Fabien.

Autres conseils

Il est plus simple que vous pensez: ${userInstance.company.encodeAsHTML()}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top