2017-08-22 20 views
0

我有一個父子域結構,我想在驗證器的子域中訪問父域數據。例如在下面的代碼示例中,child1有一個變量'name',爲了驗證器的目的,我需要child2數據。Grails域名:如何訪問父域數據?

我該如何做到這一點?

我有域的結構是這樣的:

class Parent{ 
    Child child1 
    Child child2 

    static mapping = { 
     child1 lazy:false 
     child2 lazy:false 
    } 
} 

class Child{ 
    String name 
    // some other variables 

    static belongsTo = [parent:Parent] 

    static constraints = { 
     name(nullable:true,validator:{val, obj -> 
      if(obj.parent){ 
       return true 
      } 
      return false 
     }) 
    } 
} 

我試圖 this.parent.child2 但父母發現空。

編輯:
更改:
static belongsTo = [parent:Parent]

驗證器還增加了:
if(obj.parent){ return true } return false

但仍然是一個返回false。

回答

1

更換

static belongsTo = [Parent] 

static belongsTo = [parent: Parent] 

讓孩子知道其父

0

要建立在@ bassmartin的回答,請檢查documentation自定義驗證。您的驗證器應聲明(至少)兩個參數,其中第二個參數是對象實例:

validator: { val, obj -> 
    //obj.parent is what you're looking for 
} 
+0

obj.parent仍然爲空。有什麼遺漏嗎? –