Pregunta

Tengo las siguientes clases de dominio:

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

class Company {
    String name
    ...
}

Es decir, no es un n: 1 relación entre el usuario y la empresa. Estas clases son tan y no puedo cambiarlas.

Al show.gsp Quiero tener los detalles de la empresa junto con enlaces a los usuarios que pertenece a esta empresa.

Yo sé que puedo lograr esto escribiendo una etiqueta propia, pero estoy seguro de que esto sería posible utilizando el cada etiqueta o la etiqueta de la findAll .

Si hago lo siguiente

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

He tratado de pasar el $ {} companyInstance como un parámetro, pero tampoco me dieron una excepción o no funcionó.

También he intentado usar User.findAllByCompany .

En el uso:

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

Me estoy haciendo un conjunto vacío.

¿Hay una manera fácil de lograr esto sin escribir una taglib?

Gracias de antemano.

Luis

¿Fue útil?

Solución

Las etiquetas itera <g:findAll> más de una lista de objetos, pero no se consulta la base de datos como se hace con User.findAll(..)

El código correcto es:

<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 desea utilizar absolutamente g: findAll, entonces primero hay que construir la lista de usuarios de la siguiente manera:

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

Espero que ayude,

Saludos,

Fabien.

Otros consejos

Es más simple que usted piensa: ${userInstance.company.encodeAsHTML()}

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top