Bean Validation Message with dynamic parameter
bean-validation, jakarta-ee, message, validation
Solution
When working with Hibernate Validator >= 4.2 you can reference the validated value via `${validatedValue}` in your messages (in Bean Validation 1.1 that's standardized in the spec):
cpf.validation.message=Cpf ${validatedValue} é inválido
Btw. Hibernate Validator already comes with a `@CPF` constraint, you can find out more in the reference guide. Would be very glad to hear about how that works for you.
Problem
I am getting started with bean validation, and I'm trying to compose a constraint. My constraint is to validate a CPF(personal document in Brazil). My constraint is working, but I need the message to contain a dynamic parameter. I'm using ValidationMessages.properties. My code: ``` @Constraint(validatedBy=CpfValidator.class) @Size(min=11, max=14) @Documented @Target({ElementType.FIELD,ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface Cpf { String message() default "{cpf.validation.message}"; Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {}; } ``` My ValidationMessages.properties: ``` cpf.validation.message=Cpf {cpf} é inválido ``` My Validator: i'm using a context.buildConstraintViolationWithTemplate to customiza my message. ``` @Override public boolean isValid(String value, ConstraintValidatorContext context) { String cpf = value; boolean result = ValidationUtil.validaCpf(cpf); if (result) { return true; } context.disableDefaultConstraintViolation(); context.buildConstraintViolationWithTemplate("pf.validation.message}") .addConstraintViolation(); return false; } ``` How can I pass the validated value(cpf) by parameter when the message is created?