vaadin подменю addind проблема - PullRequest
0 голосов
/ 28 июля 2011

Привет! Я использую окно навигации и представление классов для создания строки меню для нашего приложения, оно работает нормально, но когда я добавил подменю в строке меню, отображается сообщение об ошибке типа

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)

мой код похож на

    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;
}

Кто-нибудь поможет мне в классе навигации, как добавить элементы подменю? Если вы предоставите мне пример, это будет очень полезно для меня ..

1 Ответ

2 голосов
/ 01 августа 2011

Это может не иметь никакого отношения к меню.Ошибка говорит о том, что существует CustomComponent (то есть «составной» на языке Vaadin), который вы расширили и у которого нет установленного корневого компонента композиции.Может быть, это один из ваших классов представления?

В любом случае, вы должны установить это в конструкторе компонента, чтобы убедиться, что он существует во время рендеринга.Смотрите подробности и пример: http://vaadin.com/book/-/page/components.customcomponent.html

...