0

こんにちは私はナビゲーションウィンドウとクラスビューを使用してアプリケーションのメニューバーを作成していますが、メニューバー内にサブメニューを追加すると、次のようなエラーが表示されます。

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

誰もがナビゲーションクラスで私を助けてくれます。サブメニュー項目を追加する方法を教えてくれますか?例を教えてくれれば、それは私にとって大きな助けになります。

4

1 に答える 1

2

メニューとは関係ないかもしれません。このエラーは、コンポジション ルート コンポーネントが設定されていない、拡張した CustomComponent (つまり、Vaadin 言語では「コンポジット」) があることを示しています。多分それはあなたのビュークラスの1つですか?

とにかく、コンポーネントのコンストラクターでそれを設定して、レンダリング時に存在することを確認する必要があります。詳細と例については、http: //vaadin.com/book/-/page/components.customcomponent.htmlを参照してください。

于 2011-08-01T15:19:51.173 に答える