Here I will post a simple working implementation that works.
TODO:
1) Create a class that implements TraversableResolver like below:
package blogspot.soadev.validator;
import java.lang.annotation.ElementType;
import javax.validation.Path;
import javax.validation.TraversableResolver;
public class CustomTraversableResolver implements TraversableResolver {
public boolean isReachable(Object traversableObject, Path.Node traversableProperty,
Class rootBeanType, Path pathToTraversableObject,
ElementType elementType) {
return true;
}
public boolean isCascadable(Object object, Path.Node node, Class c,
Path path, ElementType elementType) {
return true;
}
}
2) Modify your code that gets the validator instance to as follows:
import blogspot.soadev.validator.CustomTraversableResolver;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
...
ValidatorFactory factory = Validation.byDefaultProvider().configure()
.traversableResolver( new CustomTraversableResolver() )
.buildValidatorFactory();
Validator validator = factory.getValidator();
Kudos to Java Powers who first attended and tested this!
Related Posts
- JSR 303 Bean Validation: @AssertMethodAsTrue - A reusable constraint annotation that spans multiple properties.
- JSR 303 Bean Validation: @ValidateDateRange - A reusable constraint annotation to validate date ranges
- Integrating JSR 303 Bean Validation with Oracle ADF 11g
Pino
