В первой версии моей программы, я загружаю В начало без проблем на этом пути:Не удается получить интерфейс весной
public class MyUI extends UI {
public void showMainView() {
addStyleName(ValoTheme.UI_WITH_MENU);
setContent(new MainScreen(MyUI.this));
mainScreen.setUI(MyUI.this);
}
public static MyUI get() {
return (MyUI) UI.getCurrent();
}
}
Но теперь я изменил его:
@SpringUI
@Viewport("user-scalable=no,initial-scale=1.0")
@Theme("mytheme")
public class MyUI extends UI {
@Autowired
MainScreen mainScreen;
public void showMainView() {
addStyleName(ValoTheme.UI_WITH_MENU);
setContent(mainScreen);
getNavigator().navigateTo(getNavigator().getState());
}
public static MyUI get() {
return (MyUI) UI.getCurrent();
}
}
Чтобы получить MainScreen через @Autowired, мне пришлось очистить конструктор MainScreen, но я не знаю, как получить пользовательский интерфейс, который мне нужен для навигатора.
Я просто получаю null в обоих направлениях.
@Component
@UIScope
public class MainScreen extends HorizontalLayout {
public MainScreen() {
UI ui = UI.getCurrent(); // is null
MyUI ui2 = MyUI.get(); // is null
CssLayout viewContainer = new CssLayout();
viewContainer.addStyleName("valo-content");
viewContainer.setSizeFull();
final Navigator navigator = new Navigator(ui, viewContainer);
// ...
}
Обычно [navigator] (https://vaadin.com/docs/-/part/framework/advanced/advanced-navigator.html) настраивается при инициализации пользовательского интерфейса, поскольку они довольно связаны между собой, и это своего рода логическое место для этого. Вы также можете проверить [Vaadin wiki для быстрой интеграции весна-ваадин] (https://vaadin.com/wiki/-/wiki/Spring+Vaadin/I+-+Getting+Started+with+Vaadin+Spring+and+ Spring + Boot) (обязательно прочитайте все 5 разделов, третий - для навигации). – Morfic