2013-08-06 27 views
0

我正在使用grails,并面临如何获取控制器(在我的情况下为contactGroup)与我的布局视图中的其他(联系人)控制器具有许多关系的数据的问题。下面是我的域名的类别码...在我的布局视图中获取控制器数据

class Contact { 
    String number 
    String name 

    ... 

    static hasMany = [groups: ContactGroup, messages: Message] 
    static belongsTo = [Message, ContactGroup] 
} 

class ContactGroup { 
String groupName 
String description 

... 

static hasMany = [contacts: Contact, messages: Message] 
} 

下面是指用括号中联系人的数量来获取所有的团体我的布局视图代码是......就像Gmail中显示的联系人和组名单。

<h4>Contacts</h4> 
    <g:link controller="contact" action="list" class="active"><h5>All (${smsserver.Contact?.list().size()})</h5></g:link> 
    <g:layoutBody/> 
    <g:each in="${smsserver.ContactGroup}" var="c"> 
     <g:link controller="contact" action="list">${c.findAll()}<br></g:link> 
    </g:each> 

请帮我一把。

回答

0

你有m:n关系。这意味着1个联系人有很多组,每个组都有很多联系人。我对吗?并且您希望显示组中所有联系人和所有联系人的联系方式。 好的。

  1. 获取所有组给定的接触:

    $ {} contact.groups%< - 组列表 - %>

或更适合

<ul> 
<g:each in="${contact.groups}" var="group"> 
    <li> 
     ${group.groupName} (${group.contacts.size()}) 
    </li> 
</g:each> 
</ul> 

显示给定联系人的所有群组和联系人

<ul> 
<g:each in="${contact.groups}" var="group"> 
    <li> 
     <b>${group.groupName}</b> (${group.contacts.size()}) 
     <ul> 
     <g:each in="${group.contacts}" var="c"> 
      <li> 
       ${c.name} 
      </li> 
     </g:each> 
     </ul> 
    </li> 
</g:each> 
</ul> 

你的控制器:

class ContactController { 

    def show(long id) { 
     def contact = Contact.get(id) 
     ['contact': contact] 
     // or 
     // render view:'YourPage', model:['contact': contact] 
    } 
} 

更多细节http://grails.org/doc/latest/guide/theWebLayer.html#controllers

+0

也做了同样的方式...但它显示的错误“空对象无法获得属性‘群体’” – user2515559

+0

你必须把'联系'来模拟。 –

+0

好吧......但是怎么样? – user2515559

相关问题