2012-10-12 50 views
0

請你能幫助我與下面的問題:Grails的級聯驗證對象沒有被映射到表

我有,我不希望被映射到表2域類(父母,子女),所以我把mapWith=none。但是,當我做parent.validate()我想驗證級聯到孩子。如何爲未映射到表的域對象啓用級聯驗證?

非常感謝提前!

回答

0

不知道你是否可以通過設計。

您可以選擇在父對象上添加一個customValidation()方法,以啓動一個循環遍歷子項並調用它們的validate()方法的檢查。然後可以將任何兒童錯誤添加到父對象的錯誤對象中。

boolean cascadedValidation() { 
    this.validate(); 

    children.each { 
     if (!it.validate()) { 
      it.errors.allErrors.each { err -> 
       // Bind somewhere on parent object 
      } 
     } 
    } 

    return this.hasErrors(); 
} 
+0

非常感謝您的解決方案!我正在考慮做類似的事情,但我不是很高興,因爲它更像是一個bandaid .... :(我在GormValidationApi中看到一個if語句,用於測試當前驗證器是否是CascadeValidator的實例...我正在嘗試找到一種方法來注入一個CascadeValidator的實例來驗證Gorm方法,以便強制級聯。 –

+0

必須有一個解決方法或解決方案,不能相信你不能級聯驗證,除非你將域映射到表! –

+0

也許這個職位是用途:http://stackoverflow.com/questions/1040596/grails-validation-of-a-list-objects – Wytze