我无法让导航器在我的项目中运行。我总是收到错误“第一次调用 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) {
}
}