StringResourceModel may fail to format numbers using MessageFormat
------------------------------------------------------------------

                 Key: WICKET-1719
                 URL: https://issues.apache.org/jira/browse/WICKET-1719
             Project: Wicket
          Issue Type: Bug
          Components: wicket
    Affects Versions: 1.3.3
            Reporter: Andrea Aime
             Fix For: 1.3.5


StringResourceModel API seems to suggest it's possible to use it without a 
Component reference using the following approach:

{code}
m = new StringResourceModel("key", null, new Model(...), new Object[] {p1, p2, 
...});
m.setLocalizer(xxxApplication.get().getResourceSettings().getLocalizer());
return m.toString()
{code}

Unfortunately the above will fail with an exception if the message uses the 
MessageFormat approach and one of the parameters
is a number, since the locale field in StringResourceModel won't be 
initialized, and will then be passed as null to new MessageFormat(value, 
locale) at line 514 of StringResourceFormat.

I'm using the following crude workaround:

{code}
StringResourceModel rm = new StringResourceModel(key, null, model, params) {
            @Override
            public void setLocalizer(Localizer localizer) {
                super.setLocalizer(localizer);
                // crude hack to force into the StringResoruceLoader to grab a 
locale,
                // which is needed to format numbers with the MessageFormat 
approach
                load();
            }
        };
        
rm.setLocalizer(GeoServerApplication.get().getResourceSettings().getLocalizer());
        return rm.getString();
{code}

but boy, this looks ugly... Creating a custom subclass that does locale loading 
in the
constructor would look better, but still quite ugly...

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to