You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Sebastien Briquet (JIRA)" <ji...@apache.org> on 2014/12/18 13:07:13 UTC

[jira] [Created] (WICKET-5790) VariableInterpolator & #getThrowExceptionOnMissingResource

Sebastien Briquet created WICKET-5790:
-----------------------------------------

             Summary: VariableInterpolator & #getThrowExceptionOnMissingResource
                 Key: WICKET-5790
                 URL: https://issues.apache.org/jira/browse/WICKET-5790
             Project: Wicket
          Issue Type: Bug
          Components: wicket
    Affects Versions: 7.0.0-M4, 6.18.0
            Reporter: Sebastien Briquet


This ticket is a 2 in 1 issue:

1/ #getThrowExceptionOnMissingResource() is given as VariableInterpolator ctor arg.

When you want to raise a validation error like:

            ValidationError error = new ValidationError();
            error.addKey("MyComponent.ConversionError");
            error.setVariable("myvar", myvalue);

            this.error(error);

A call is made to FormComponent.MessageSource.substitute which returns new VariableInterpolator(...).toString()

The second arg to VariableInterpolator is meant for "exceptionOnNullVarValue" but what is supplied in #substitute() is Application.get().getResourceSettings().getThrowExceptionOnMissingResource().

That's where it looks strange because #getThrowExceptionOnMissingResource() represents a flag about missing resources (like MyComponent.properties) and has nothing related to null values in my understanding.

2/ ${var} is not replaced in case of null value (and null is allowed)
In the previous example, if #getThrowExceptionOnMissingResource() return *false* (meaning exceptionOnNullVarValue is false) and myvalue is *null*, the validation error message gives something of the form "value of myvar: ${myvar}" instead of "value of myvar: null".



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)