Hi,

I get the following warning message when trying to retrieve a localized
string: *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. Offending
component*

This how my code look like:
public class NavigationBarPanel extends Panel {

    private static final long serialVersionUID = 1L;
/** The navigation bar links */
    private final String MENU_MENU = new
StringResourceModel("navigationbar.menu.home", this, null).getString();
    private final String NUMBER_POOL_MENU = new
StringResourceModel("navigationbar.menu.numberpool", this,
null).getString();
    private final String NUMBER_POOL_LOG_MENU = new
StringResourceModel("navigationbar.menu.numberpoollog", this,
null).getString();
    private final String DEFRAGMENT_MENU = new
StringResourceModel("navigationbar.menu.defragment", this,
null).getString();
    private final String SEARCH_MENU = new
StringResourceModel("navigationbar.menu.search", this, null).getString();

    public NavigationBarPanel(String id) {
        super(id);
        addLinks();
    }

    private void addLinks() {
        addLink("home", MENU_MENU, HomePage.class);
        addLink("numberPool", NUMBER_POOL_MENU, NumberPoolPage.class);
        addLink("numberPoolLog", NUMBER_POOL_LOG_MENU,
NumberPoolLogPage.class);
        addLink("defragment", DEFRAGMENT_MENU, DefragmentPage.class);
        addLink("search", SEARCH_MENU, SearchPage.class);
    }

    private void addLink(String id, String title, final Class<? extends
Page> pageClass) {
        BookmarkablePageLink link = new BookmarkablePageLink(id, pageClass);
        link.add(new AttributeModifier("class", true, new
AbstractReadOnlyModel() {
            private static final long serialVersionUID = 1L;

            @Override
            public Object getObject() {
                String currentPageName = pageClass.getName();
                String parentPageName  = getPage().getClass().getName();
                return StringUtils.equals(currentPageName, parentPageName) ?
"current_page_item" : AttributeModifier.VALUELESS_ATTRIBUTE_REMOVE;
            }

        }));
        link.add(new Label("title", new Model(title)));
        add(link);
    }
}

Could you please tell me why am I getting this warning. I use the same
strategy to add localized string to my pages but I don't get warnings.

Gr. Azzeddine

Reply via email to