2011-09-27 101 views
0

假設我有哪幾種成員域類branch的Grails:域類派生領域

… 
static hasMany = [ members:Member ]; 
… 

現在假設我希望有現成的分支成員的數量,把它顯示在listview動作,所以也許將這些信息存儲到域類本身的變量中會是一個好主意?

… 
Integer memberCount = members.size(); 
static constraints = { 
    memberCount(editable:false); 
} 
… 

(這是正確的語法?)編輯:這是不正確的語法。我無法評估成員列表的大小,因爲它還不存在,而且grails會抱怨size()不適用於null對象。我還能嘗試什麼?

然而,如memberCount現已在域類的變量,所以可以在創建所述Branch的(這是禁忌直觀的)一個值分配給它,它會一旦一個新的Member是不會自動更新添加。

當然可以用不同的方式達到預期的結果。我可以操作view.gsplist.gsp/Branch目錄中,在其中添加一些額外的<td>等。但對我而言,這看起來並不高雅。

基本上,我想我正在尋找一些方法來告訴Grails的某一個變量是衍生,不應該由用戶可置,但更新必要的時候。有這樣的方式嗎?

回答

2

您可以添加你不想堅持到transients靜態列表中的任何特性:

static transients = ['memberCount'] 

this page in the manual

此外,this StackOverflow question answers the same question


此外,爲了更好的辦法做派生屬性可能會使用Derived Properties feature of GORM

+0

如果'memberCount'屬性位於'transients'列表中,它將不會被存儲在數據庫中。但是,一旦添加了一個新的「成員」,它會更新嗎?在我看來,我將不得不使用您鏈接的GORM的派生屬性feauture。 – mzuba