You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Stephen Swinsburg <s....@lancaster.ac.uk> on 2009/02/28 17:25:16 UTC

issues with localising a HashMap

Hi all,

I have a HashMap I need to localise like so:

LinkedHashMap<String, String> options = new LinkedHashMap<String,  
String>();
options.put("1", new StringResourceModel(option.1",  
this,null).getString());
options.put("2", new StringResourceModel("option.2",  
this,null).getString());
options.put("3", new StringResourceModel("option.3",  
this,null).getString());		

But I can't get around this error:

WARN: Tried to retrieve a localized string for a component that has  
not yet been added to the page. This can sometimes lead to an invalid  
or no localized resource returned. Make sure you are not calling  
Component#getString() inside your Component's constructor.

This is being used in a Panel that makes up the content of a  
ModalWindow. When the page loads that contains the ModalWindow, the  
errors are thrown for each getString() call.

The exact same code works on a normal Page (ie not in a ModalWindow).  
Anyone know what is up/how to get around it? It does actually work  
fine, ie it renders as normal.


Wicket 1.3.5


cheers,
Steve


Re: issues with localising a HashMap

Posted by Jeremy Thomerson <je...@wickettraining.com>.
You shouldn't be using Map<String, String> - it should be Map<String,
IModel<String>> if you want it to work right.  You're using a "push" method
of coding, pushing your data (strings in this case) into a component prior
to rendering.  This will break down on you when using it in Wicket.  Use a
"pull" method - IOW, get familiar with models.  Try removing the getString()
and refactor your component instantiation (if needed) to take the model
rather than the string.

-- 
Jeremy Thomerson
http://www.wickettraining.com


On Sat, Feb 28, 2009 at 10:25 AM, Stephen Swinsburg <
s.swinsburg@lancaster.ac.uk> wrote:

> Hi all,
>
> I have a HashMap I need to localise like so:
>
> LinkedHashMap<String, String> options = new LinkedHashMap<String,
> String>();
> options.put("1", new StringResourceModel(option.1",
> this,null).getString());
> options.put("2", new StringResourceModel("option.2",
> this,null).getString());
> options.put("3", new StringResourceModel("option.3",
> this,null).getString());
>
> But I can't get around this error:
>
> WARN: Tried to retrieve a localized string for a component that has not yet
> been added to the page. This can sometimes lead to an invalid or no
> localized resource returned. Make sure you are not calling
> Component#getString() inside your Component's constructor.
>
> This is being used in a Panel that makes up the content of a ModalWindow.
> When the page loads that contains the ModalWindow, the errors are thrown for
> each getString() call.
>
> The exact same code works on a normal Page (ie not in a ModalWindow).
> Anyone know what is up/how to get around it? It does actually work fine, ie
> it renders as normal.
>
>
> Wicket 1.3.5
>
>
> cheers,
> Steve
>
>