Frage

Ich habe folgende Domain-Klassen:

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

class Company {
    String name
    ...
}

Das heißt, es gibt eine n: 1-Beziehung zwischen Anwender und Unternehmen. Diese Klassen sind so, und ich kann sie nicht ändern.

Am show.gsp mag ich die Details des Unternehmens haben, zusammen mit Links zu Benutzer, die an diese Firma gehört.

Ich weiß, dass ich das erreichen kann einen eigenen Tag zu schreiben, aber ich bin sicher, dass dies möglich wäre, mit dem jedes -Tag oder dem findAll Tag.

Wenn ich die folgenden

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

Ich habe versucht, den $ {companyInstance} als Parameter zu übergeben, aber entweder ich bekam eine Ausnahme oder es hat nicht funktioniert.

Ich habe mit auch versucht User.findAllByCompany .

Bei Verwendung:

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

Ich bin eine leere Menge zu bekommen.

Gibt es eine einfache Möglichkeit, dies zu erreichen, ohne eine taglib zu schreiben?

Vielen Dank im Voraus.

Luis

War es hilfreich?

Lösung

Der <g:findAll> Tag iteriert über eine Objektliste aber es Abfrage nicht die DB als getan mit User.findAll(..)

Der richtige Code lautet:

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

Wenn Sie unbedingt Gebrauch g möchten: findAll, dann müssen Sie zuerst die Liste der Benutzer wie folgt erstellen:

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

Ich hoffe, es hilft,

Grüße,

Fabien.

Andere Tipps

Es ist einfacher, dass Sie denken: ${userInstance.company.encodeAsHTML()}

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top