2013-08-06 28 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

相關問題