<dependency>
<groupId>org.apache.bval</groupId>
<artifactId>bval-jsr</artifactId>
<version>2.0.2</version>
</dependency>
public class User {
@NotNull
@Size(min = 1, max = 50)
private String name;
@NotNull
@Min(value = 18)
private Integer age;
// Getters and setters
}
public class Main {
public static void main(String[] args) {
User user = new User();
user.setName("");
user.setAge(15);
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Set<ConstraintViolation<User>> violations = validator.validate(user);
for (ConstraintViolation<User> violation : violations) {
System.out.println(violation.getMessage());
}
}
}
<validation-config
xmlns="http://xmlns.jcp.org/xml/ns/validation/configuration"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/validation/configuration
http://xmlns.jcp.org/xml/ns/validation/configuration/validation-configuration-2.0.xsd">
<default-provider>org.apache.bval.jsr.ApacheValidationProvider</default-provider>
<message-interpolator>org.apache.bval.jsr.resolver.DefaultMessageInterpolator</message-interpolator>
<constraint-validator-factory>org.apache.bval.jsr.resolver.DefaultTraversableResolver</constraint-validator-factory>
<message-interpolator>org.apache.bval.jsr.resolver.DefaultMessageInterpolator</message-interpolator>
<constraint-validator-factory>org.apache.bval.jsr.resolver.DefaultTraversableResolver</constraint-validator-factory>
<traversable-resolver>org.apache.bval.jsr.resolver.DefaultTraversableResolver</traversable-resolver>
<constraint-validator-factory>org.apache.bval.jsr.resolver.DefaultConstraintValidatorFactory</constraint-validator-factory>
</validation-config>