Hi all,

AFAIKS these extra parameters are needed to support multiple data inputs only.

Additionally to the var-args vs array decision, I don't like that we are using MessageFormat for this: it has a foreign syntax {0}, it's index-based and it doesn't work with Wicket converters.

I'd preferred if we could replace this with something else - so instead of:

        new StringResourceModel("weather.detail", page, wsModel,
cal.getTime(), "${currentStatus}", new PropertyModel<Double>(wsModel, "currentTemperature"), new PropertyModel<String>(wsModel, "units"));

The report for {0,date,medium}, shows the temperature as {2,number,###.##} {3} and the weather to be {1}

... something like the following:

        new StringResourceModel("weather.detail", page)
           .addModel("station", wsModel)
           .addModel("date", Model.of(cal.getTime()));

The report for ${date}, shows the temperature as ${station.currentTemperatur} ${station.units} and the weather to be ${station.currentStatus}

Each nested model is scoped with an identifier and can easily be identified from the message string.

Sven


On 09/23/2014 02:42 PM, Martin Grigorov wrote:
Hi,

https://issues.apache.org/jira/browse/WICKET-5702 hit a problem with
StringResourceModel that we uses Object... as a last parameter in its
constructors.

I think that using Object... is evil, especially when there is an
overloaded method/constructor that "looks like" the other one.
For example:

MyObject(String p1, Object... extra)
MyObject(String p1, Integer p2, Object... extra)

If a developer wants to pass p2 as an extra then (s)he has to be really
careful.

In https://issues.apache.org/jira/browse/WICKET-4972 I have suggested to
use Object[] instead, but later when I worked on it for 7.0.0-M1 I have
forgotten to change it.

By using Object[] the developer has to type some more but it is much easier
to reason about.

Any objections to make the change for 7.0.0-M4 ?


Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov


Reply via email to