プロジェクト内でナビゲーターを実行できません。「getConnectorId()が初めて呼び出されたときに、コンポーネントをセッションに接続する必要があります」というエラーが常に表示されます
ほぼ同じセットアップですぐに実行できるいくつかの例に従いましたが、自分の環境内で実行できず、理由がわかりません。
これは私のメインUIです
@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) {
}
}