vinayaka
vinayaka

Reputation: 31

vaadin submenu addind problem

Hi I m using navigation window and class view to create menu bar for our application it works fine,but when i m added submenu inside the menu bar it showing error saying like

SEVERE: Terminal error:
java.lang.IllegalStateException: Composition root must be set to non-null value before the com.vaadin.incubator.spring.ui.Reference2 can be painted
    at com.vaadin.ui.CustomComponent.paintContent(CustomComponent.java:125)

my code is like

    for (final Class viewClass : new Class[] { Trade.class, Position.class,
            Cash.class, Recon.class, Price.class, Accounting.class,
            Reference.class, Report.class, }) {
        navigator.addView(viewClass.getSimpleName(), viewClass);

        if (viewClass.getSimpleName().equals("Price")) {
            MenuBar.MenuItem Price = menu.addItem("Price", null);

            for (final Class viewClasssubmenu : new Class[] {
                    PriceActivity.class, ViewPrice.class, }) {
                navigator.addView(viewClasssubmenu.getSimpleName(),
                        viewClasssubmenu);
                Price.addItem(viewClasssubmenu.getSimpleName(),
                        new MenuBar.Command() {

                            public void menuSelected(MenuItem selectedItem) {
                                // TODO Auto-generated method stub

                                navigator.navigateTo(viewClasssubmenu);

                            }
                        });

            }

        } else if (viewClass.getSimpleName().equals("Recon")) {
            if (viewClass.getSimpleName().equals("Recon")) {
                MenuBar.MenuItem Recon = menu.addItem("Recon", null);

                for (final Class viewClasssubmenu : new Class[] {
                        Recon1.class, Recon2.class, }) {
                    navigator.addView(viewClasssubmenu.getSimpleName(),
                            viewClasssubmenu);
                    Recon.addItem(viewClasssubmenu.getSimpleName(),
                            new MenuBar.Command() {

                                public void menuSelected(
                                        MenuItem selectedItem) {
                                    // TODO Auto-generated method stub

                                    navigator.navigateTo(viewClasssubmenu);

                                }
                            });

                }
            }
        } else if (viewClass.getSimpleName().equals("Reference")) {
            if (viewClass.getSimpleName().equals("Reference")) {
                MenuBar.MenuItem Reference = menu
                        .addItem("Reference", null);

                for (final Class viewClasssubmenu : new Class[] {
                        Reference1.class, Reference2.class, }) {
                    navigator.addView(viewClasssubmenu.getSimpleName(),
                            viewClasssubmenu);
                    Reference.addItem(viewClasssubmenu.getSimpleName(),
                            new MenuBar.Command() {

                                public void menuSelected(
                                        MenuItem selectedItem) {
                                    // TODO Auto-generated method stub

                                    navigator.navigateTo(viewClasssubmenu);

                                }
                            });

                }
            }
        } else {

            menu.addItem(viewClass.getSimpleName(), new MenuBar.Command() {

                public void menuSelected(MenuItem selectedItem) {

                    navigator.navigateTo(viewClass);

                }

            });
        }
    }

    return w;
}

Any one help me out in navigation class viwes how to add submenu items ?if you provide me exaple it will be great help for me..

Upvotes: 0

Views: 1723

Answers (1)

eeq
eeq

Reputation: 2118

This may not have anything to do with the menu. The error says that there is a CustomComponent (i.e. "composite" in Vaadin language) that you have extended that has not a set the composition root component. Maybe it is one of your view classes?

Anyway, you should set that in the constructor of the component to make sure that one exists on rendering time. See this for details and example: http://vaadin.com/book/-/page/components.customcomponent.html

Upvotes: 2

Related Questions