2015-12-02 30 views
0

我想为Spring应用程序添加一个导航栏(就像bootstrap的),但没有获得导航菜单出现在网页上!Vaadin Spring Navbar

任何人都可以告诉我这里有什么问题吗?

下面是我的代码:

private Panel viewContainer; 

private HorizontalLayout navbar; 

private Button btnHome; 
private Button btnNested; 

private Button createNavigationButton(String caption, final String viewName) { 
    Button button = new Button(caption); 
    button.addStyleName(ValoTheme.BUTTON_SMALL); 
    // If you didn't choose Java 8 when creating the project, convert this 
    // to an anonymous listener class 
    button.addClickListener(event -> getUI().getNavigator().navigateTo(
      viewName)); 
    return button; 
} 

@Override 
protected void init(VaadinRequest request) { 

    final VerticalLayout root = new VerticalLayout(); 
    root.setSizeFull(); 

    navbar = new HorizontalLayout(); 
    navbar.setWidth("100%"); 
    navbar.setDefaultComponentAlignment(Alignment.MIDDLE_RIGHT); 
    root.addComponent(navbar); 

    final Label brand = new Label("Nested demo"); 
    brand.addStyleName(ValoTheme.LABEL_H1); 
    brand.addStyleName(ValoTheme.LABEL_NO_MARGIN); 
    navbar.addComponent(brand); 
    navbar.setComponentAlignment(brand, Alignment.MIDDLE_LEFT); 
    navbar.setExpandRatio(brand, 1); 

    btnHome = new Button("Home", FontAwesome.HOME); 
    btnHome.addStyleName(ValoTheme.BUTTON_BORDERLESS); 

    navbar.addComponent(btnHome); 

    btnNested = new Button("nested", FontAwesome.COFFEE); 
    btnNested.addStyleName(ValoTheme.BUTTON_BORDERLESS); 

    navbar.addComponent(btnNested); 

    viewContainer = new Panel(); 
    viewContainer.setSizeFull(); 
    root.addComponent(viewContainer); 
    root.setExpandRatio(viewContainer, 1); 
    } 

任何暗示是非常赞赏。

谢谢

+0

是_only_ navbar缺失吗?是否有任何提示(例如你的浏览器的开发工具告诉你什么)? – cfrick

+1

似乎setContent(root);调用从init方法中缺少。 –

回答

0

亨利的评论几乎肯定是正确的答案。

通过init(VaadinRequest)代码判断您使用的是UI类。

没有setContent(some components with visible stuff in them); 你什么都看不到。

当你尝试新事物或做概念验证时,你不会在Vaadin发生任何事情。恕我直言,总是一个很好的习惯,从真正愚蠢的UI材料开始,例如setContent(new Label(“TODO - implement this content-xxx”));

使用浏览器开发工具也是一个好主意。一个快速的选择元素应该告诉你UI分区是空的,并允许你开始诊断。

TL; DR: -

UI是ComponentContainer,所以你需要 - 无论是

setContent(myLayoutWithStuff); 

getContent().addComponent(myStuff); 

显示someStuff。