2013-07-03 36 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