2013-07-03 35 views
0

我檢出了Grails: How to combine domain objects' errors with command objects' errors?,但由於某些原因,解決方案對我而言不起作用。這可能只適用於Grails 1.3.7而不適用於Grails 2.2.1。Grails - 組合命令對象和子對象中的錯誤

我有一個包含InnerObjectCommand列表的命令對象OuterObjectCommand。我在控制器中手動填充它,然後調用驗證。在OuterObjectCommand上調用validate()似乎不驗證InnerObjectCommand列表,因此我分別驗證列表中的所有元素。我想要做的是將InnerObjectCommand對象和OuterObjectCommand對象的所有錯誤添加到flash.errors中。我怎樣才能做到這一點?

+0

您是否嘗試過使用自定義[驗證](http://grails.org/doc/latest/ref/Constraints/validator.html)外部命令對象會顯式驗證內部命令對象? – dmahapatro

+0

我不知道該怎麼寫。 static constraints = {innerObjectCommand validator:{it.validate(); ??? } – Anonymous1

回答

0

查看validator頁面的最後一個示例。

依稀,你需要像下面:在

class ParentCommand { 
    List<ChildCommand> childCommands 
    static constraints = { 
     childCommands validator: {val, obj -> 
      def errors = [] 
      val.each{ 
       errors << (!it.validate() ? it.errors.allErrors : []) 
      } 

      errors?.flatten() 
     } 
    } 
} 
+0

我得到一個ArrayIndexOutOfBoundsException。我正在研究它,但有關爲什麼可能發生的任何想法? – Anonymous1

+0

異常來自「錯誤?.flatten()」。 – Anonymous1

+0

@ Anonymous1我不確定除非我看到實現,否則會是什麼原因。 – dmahapatro