2010-01-08 9 views
1

나는 다음과 같은 도메인 클래스가 있습니다그루비 findall은 각 태그 질문

입니다
class User = { 
     String username 
     ... 
     Company company 
} 

class Company { 
    String name 
    ... 
} 

, 없음이 : 사용자와 기업 사이의 1 개의 관계. 이 클래스는 너무 커서 변경할 수 없습니다.

show.gsp에서이 회사에 속한 사용자 에 대한 링크가있는 회사 정보가 필요합니다.

나는 내가 자신의 태그를 작성하는이를 수 있다는 것을 알고 있지만, 나는 이것이 태그 또는하여 findall은 태그를 사용 할 수있을 것이라고 확신합니다.

내가 할 경우 내가 $ {companyInstance} 매개 변수로를 전달하려했지만 하나 나는 예외를 가지고하거나 작동하지 않았다

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

다음과 같습니다.

나는 또한 User.findAllByCompany을 사용해 보았습니다.

사용 :

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

을 나는 빈 집합을 얻고있다.

taglib을 쓰지 않고도이 작업을 쉽게 수행 할 수 있습니까?

미리 감사드립니다.

루이스는

+1

n : 1 관계가 있다고 언급했지만 회사 클래스에서는 User의 목록 (또는 집합)을 참조하지 않습니다. 그게 정상인가요? 현재 1 : 1 "belongsTo"관계 만 볼 수 있습니다. – gizmo

+0

참. 사실 그것은 내가하려는 일을하기에 충분합니다. company_id는 User 테이블의 외래 키입니다. 어쨌든 질문은 일반적으로 적용됩니다 : findAll 태그에 매개 변수를 전달하는 방법 resp. 각 태그. 귀하의 의견을 주셔서 감사합니다 (+1) – Luixv

답변

0

<g:findAll> 태그를 반복하지만 User.findAll(..)

올바른 코드로 수행으로는 DB를 쿼리하지 않습니다이다 :

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

절대적으로 g : findAll을 사용하려는 경우에는 다음 목록을 작성해야합니다. 다음과 같이 사용자 : 나는 그것이 도움이되기를 바랍니다

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

,

감사합니다,

파비앙.

+0

고마워요! 그것은 완벽하게 작동합니다. – Luixv

-1

그것은 당신이 생각보다 간단합니다 : 객체 목록을 통해 ${userInstance.company.encodeAsHTML()}

+0

나는 내가 충분히 명확하다고 생각합니다. 나는 회사 전망에있다. 내 말은, 나는 userInstance가 없다는 것이다. 나는 companyInstance를 가지고있다. – Luixv