[ 
https://issues.apache.org/jira/browse/WICKET-5654?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14096833#comment-14096833
 ] 

Thibault Kruse commented on WICKET-5654:
----------------------------------------

Hi Andrea, thanks for reproducing this. Can you explain in more detail why 
violation.getMessage() is safer than  violation.getMessageTemplate()?
In any case, I believe we can add multiple keys which are tried in sequence, so 
maybe we can have both solutions in one? If that is true, probably getMessage() 
should be tried before getMessageTemplate().

> DefaultViolationTranslator should maybe use getMessage()
> --------------------------------------------------------
>
>                 Key: WICKET-5654
>                 URL: https://issues.apache.org/jira/browse/WICKET-5654
>             Project: Wicket
>          Issue Type: Improvement
>          Components: wicket-bean-validation
>            Reporter: Thibault Kruse
>            Assignee: Igor Vaynberg
>         Attachments: jsr303issue.tar.gz
>
>
> We created our own Bean Validation Annotation like this:
> {code}
> @Constraint(validatedBy = YearMonthDurationValidator.class)
> public @interface DurationConstraints {
>     String DEFAULT_MESSAGE = "{bad.boundaries}";
> ...
> {code}
> And in YearMonthDurationValidator:
> {code}
> @Override
>     public boolean isValid(final Duration<YearMonth> value, final 
> ConstraintValidatorContext context) {
>         context.disableDefaultConstraintViolation();
>         if (...) {
>             
> context.buildConstraintViolationWithTemplate("{duration.from.null}").addPropertyNode("from")
>                    .addConstraintViolation();
>             valid = false;
>         } else {
>             
> context.buildConstraintViolationWithTemplate("{duration.to.null}").addPropertyNode("from")
>                    .addConstraintViolation();
>             valid = false;
>         }
>         ...
> {code}
> Wicket provides a DefaultViolationTranslator which uses 
> violation.getConstraintDescriptor().getAttributes().get("message")
> as key to look up a localized message. However, in our case, this is always 
> "bad.boundaries", and we believe that it would be more useful if the 
> DefaultViolationTranslator used violation.getMessageTemplate() instead, or 
> maybe as the first key (more backwards compatible). That way we could provide 
> specific error messages for the cases duration.to.null and duration.from.null
> This is a complex design choice, so we are suggesting this tentatively, not 
> really sure whether this would be actually better, and what breakage could 
> occur.
> We will go ahead and implement our own IViolationTranslator as suggested.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to