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.