0

我无法让导航器在我的项目中运行。我总是收到错误“第一次调用 getConnectorId() 时必须将组件附加到会话”

我遵循了几个示例,其中它以几乎完全相同的设置开箱即用,但我无法让它在我的环境中运行,我不知道为什么。

这是我的主界面

@SpringUI
public class MainUI extends UI implements View{

HorizontalLayout root;

@Override
protected void init(VaadinRequest request) {
    root = new HorizontalLayout();

    VerticalLayout menu = this.createMenuBar();
    menu.setWidth("20%");
    root.addComponents(menu);

    Panel viewPanel = new Panel();
    root.addComponentsAndExpand(viewPanel);

    setContent(root);

    final Navigator navigator = new Navigator(this, viewPanel);
    navigator.addView("Food", FoodView.class);
    navigator.addView("Meal", MealView.class);
    navigator.addView("", MainView.class);

    // even with 
    //navigator.addView("Main", MainView.class);
    //navigator.navigateTo("Main");
    // i get the same error
}

@Override
public void enter(ViewChangeEvent event) {
    // TODO 
}

private VerticalLayout createMenuBar() {
    VerticalLayout menuBar = new VerticalLayout();
    for(String s: new String[] {"Food", "Meal"}) {
        menuBar.addComponents(this.createNavigationButton(s, this.getNavigator()));
    }

    return menuBar;
}

private Button createNavigationButton(final String state, final Navigator navigator) {
    return new Button("Go go" + state, new Button.ClickListener() {

        @Override
        public void buttonClick(ClickEvent event) {
            navigator.navigateTo(state);
        }
    });     
}

}

这是我的主要/食物/膳食视图,它们只是带有标签的树桩,因为我只是想测试一个多页示例

@SpringView(name = MainView.VIEW_NAME)
public class MainView extends UI implements View {

public static final String VIEW_NAME = "Main";

@Override
protected void init(VaadinRequest request) {

    VerticalLayout root = new VerticalLayout();
    setContent(root);

    Label lbl = new Label("MainView");
    root.addComponent(lbl);
}

@Override
public void enter(ViewChangeEvent event) {


}


}
4

0 回答 0