2011-07-28 21 views
0

你好我米使用導航窗口和類視圖中創建菜單欄爲我們的應用程序,它工作正常,但是當IM添加的菜單欄裏面的子菜單就顯示說像vaadin子addind問題

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

任何一個幫助我在導航類viwes如何添加子菜單項?如果你給我提供的exaple這將是對我很大的幫助..

回答

2

這可能與菜單沒有任何關係。該錯誤表示存在一個CustomComponent(即Vaadin語言中的「複合」),您已擴展該CustomComponent並沒有設置組合根組件。也許這是你的一個視圖類?

無論如何,您應該在組件的構造函數中設置它以確保在渲染時存在一個。有關詳細信息和示例,請參閱此處:http://vaadin.com/book/-/page/components.customcomponent.html