import javax.validation.*;
import java.util.Set;
public class User {
@NotNull
@Size(min = 2, max = 20)
private String name;
@NotNull
@Email
private String email;
}
public class Main {
public static void main(String[] args) {
User user = new User();
user.setName("John");
user.setEmail("john@example.com");
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Set<ConstraintViolation<User>> violations = validator.validate(user);
if (violations.isEmpty()) {
} else {
for (ConstraintViolation<User> violation : violations) {
System.out.println(violation.getMessage());
}
}
}
}
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;
@Documented
@Constraint(validatedBy = CustomValidator.class)
@Target({ElementType.FIELD, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface CustomValidation {
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
public class CustomValidator implements ConstraintValidator<CustomValidation, String> {
@Override
public void initialize(CustomValidation constraintAnnotation) {
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
return value != null && value.startsWith("prefix");
}
}