2013-06-27 53 views
0

我是新來的固定裝置在grails中,並在我的代碼碰到這個問題。我試圖用夾具來構建以下領域對象的實例:問題與Grails的燈具和域類驗證

class Tree { 
    static constraints = { 
     relationships(
      validator: { relationships, tree-> 
       relationships && 
       !(relationships.isEmpty()) && 
       relationships.every { it.validate() 
      } 
     ) 
    } 
    static hasMany = [ 
     relationships: Branch 
    ] 
} 

class Branch { 
    Tree tree 
    static constraints = {} 
} 

我嘗試了這些實現,所有這些都導致驗證錯誤:

fixture { 
    Build { 
     //oak(Tree) 
     //oakBranch(Branch){ tree = oak } 

     //oakBranch(Branch){ tree = ref("oak") } 
     //oak(Tree) 

     //oak(Tree){ relationships = [ ref("oakBranch") ] } 
     //oakBranch(Branch) 
    } 
} 

所有實現返回相同的錯誤:「關於'關係'的字段:被拒絕的值[null]」。任何幫助將不勝感激,謝謝。

回答

1

我不知道你正在試圖通過但檢查relationships && !(relationships?.isEmpty()) &&與自定義的驗證器來完成,如果你刪除它,並重新編寫代碼爲跟隨你可以繞過你的錯誤是什麼:

class Tree { 
    static constraints = { 
     relationships (
       validator: { relationships, tree-> 
//     relationships && 
//       !(relationships?.isEmpty()) && 
          relationships.every { it.validate()} 
       } 
     ) 
    } 
    static hasMany = [relationships: Branch] 
} 

夾具.groovy:

import tree.* 
fixture { 
    Build { 
     oak(Tree) { } 
     oakBranch(Branch){ tree = oak } 

     //oakBranch(Branch){ tree = ref("oak") } 
     //oak(Tree) 

     //oak(Tree){ relationships = [ ref("oakBranch") ] } 
     //oakBranch(Branch) 
    } 
} 
+0

感謝您的回覆。我提供的例子是原始的精簡版本,其中的驗證器必須檢查關係是否爲空,列表不是空的,並且所有關係都通過它們自己的驗證。儘管您的回覆確實有效,但這些驗證無法刪除。 – aCre1iS

+0

當您加載燈具時,表格中是否有數據?意義在那裏有任何關係嗎? – Alidad

+0

我目前正在加載夾具進行測試。我假設表中不應該有任何數據。 – aCre1iS