我有以下域类:

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

class Company {
    String name
    ...
}

也就是说,有一个N:用户和公司之间1间的关系。 这些类是这样,我不能改变它们。

在show.gsp我想链接到有该公司的详细信息一起 用户谁属于这家公司。

我知道我能做到这一点编写自己的标签,但我相信,这将使用的每个标记或在的findAll 标签是可能的。

如果我执行以下操作

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

我试图通过的 $ {} companyInstance 作为参数,但无论我得到了一个异常,也没有工作。

我也尝试使用的 User.findAllByCompany 即可。

当使用:

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

我收到一个空集。

有一种简单的方式来实现,而不需要写一个标签库?

预先感谢。

路易斯

有帮助吗?

解决方案

在对象列表中的<g:findAll>标记迭代,但它不查询DB与User.findAll(..)完成

正确的代码是:

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

我希望它能帮助,

此致

小煜。

其他提示

这是更简单,你想:${userInstance.company.encodeAsHTML()}

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top