You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Thibault Kruse (JIRA)" <ji...@apache.org> on 2014/07/28 17:23:38 UTC

[jira] [Created] (WICKET-5654) DefaultViolationTranslator shoud maybe use getMesage()

Thibault Kruse created WICKET-5654:
--------------------------------------

             Summary: DefaultViolationTranslator shoud maybe use getMesage()
                 Key: WICKET-5654
                 URL: https://issues.apache.org/jira/browse/WICKET-5654
             Project: Wicket
          Issue Type: Improvement
            Reporter: Thibault Kruse


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)