I have been trying to get @Valid to work in a composite constraint but no luck so far. I went through HV documentation and searched online to find out if @Valid is not supported in composite constraints but I can't find any mention of that.
Here is a simple example that shows the issue:
{code:java}
public class Foo {
@NotNull // without composite constraint. both work as expected @Valid Bar bar
@NotNullAndValid // composite constraint consisting of @NotNull and @Valid Baz baz; // @NotNull gets applied but cascade validation (@Valid) does not
}
@NotNull @Valid @Constraint(validatedBy={})
// RUNTIME retention, FIELD target for simplicity
public @interface NotNullAndValid {
// message, groups, payload
} {code}
So my question is this: Is @Valid supported in composite constraint? If not, can you please point me to some online resource that explains why.
My guess is that it's not supported for the following reason: @Valid does not support groups (i.e., if you have @Valid declared somewhere then cascade validation will always take place regardless of the validation group that was specified in/passed to the validator API call). On the other hand, composite constraints support groups/can be turned on/off by validating a bean for a specific group. If @Valid were to be placed in a composite constraint then you effectively make @Valid support groups (i.e., cascade validation will become group based rather than the mere presence/absence of @Valid constraint).
Any thoughts? |
|