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

Andrea Del Bene commented on WICKET-5654:
-----------------------------------------

I asked an opinion to Igor and I decided to implement the following strategy:

-try to locate bundle messages with getMessageTemplate
-try to locate bundle messages with getMessage
-try to locate bundle messages with the default annotation message

getMessageTemplate and the default annotation message are used only if they are 
different from getMessage.

In this way we fix the issue and we keep using the the default annotation 
message if the other options fail.

> 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