2010-05-05 71 views
0

可以通過在相應的域類的驗證塊中指定GSP文件中的視圖元素的順序來指定視圖元素的順序。如果繼承,則始終首先顯示父類的參數。例如:Grails:繼承域對象中視圖元素的順序

class A { 

string a 
String b 

static constraints = { 
    b() 
    a() 
} 
} 

class B extends A{ 
String c 
String d 
static constraints = { 
    d() 
    c() 
    b() //parameter from the parent 
    a() //parameter from the parent 
} 
} 

順序是b,a,d,c。我怎樣才能讓它d,c,b,一個沒有篡改gsp。

感謝..

回答

0

在A級的限制,定義你希望它們顯示的順序限制:

static constraints = { 
    d() 
    c() 
    b() 
    a() 
} 

即使沒有約束,留下一個入口空()來創建訂單。但這隻適用於腳手架。

+0

你確定我可以在父項中指定子元素..我嘗試時發現缺少方法異常!它編譯得很好,但運行時錯誤。 嵌套的異常是org.codehaus.groovy.runtime.InvokerInvocationException:groovy.lang.MissingMethodException:沒有方法的簽名:沒有方法的簽名:b()適用於參數類型:(java.util.Collections $ EmptyMap)values :[[:]] – bsr 2010-05-06 02:50:44

+0

你是對的,我誤解了你的例子。 另一種選擇是嘗試域對象繼承(使用靜態映射tablePerHierarchy false)。然後在子類中設置順序。 – 2010-05-06 11:10:17

+0

對我來說,測試它並不容易,因爲它會改變我的表結構。即使這樣,我懷疑它會允許我按照我想要的方式排序,因爲我對tablePerHierarchy的唯一區別是它爲擴展類創建了不同的表比使用父表。我會嘗試如果沒有人迴應我在此期間..謝謝你... – bsr 2010-05-07 14:33:31