In my grails app I have an outer command object that contains a list of other command objects:
public class OuterCommand {
List<InnerCommand> innerCommands = ListUtils.lazyList([], FactoryUtils.instantiateFactory(InnerCommand))
}
class InnerCommand {
String code
Long id
String value
static constraints = {
code(nullable: false, blank: false)
value(nullable: false, blank: false)
}
}
The rather unusual instantiation of innerCommands is based on this advice. However, I find that if I call validate() on an instance of OuterCommand, the validation does not seem to validate the contained instances of InnerCommand.
Is it possible to nest command objects and have the entire graph of command objects validated when validate() is called on the outermost object?
I don't think that Domain Objects in a Command or nested Commands get validated by default, you would have to write a validator that loops through the innerCommands and validates them all.
You'll probably have to handle the Errors object and merge it all the results together, but its not too difficult.