UIP-провайдер не был добавлен, и нет параметра инициализации "UI" Ошибка Vaadin после интеграции Spring
Я получил, что UIProvider не был добавлен, и нет ошибки параметра инициализации "UI" после того, как я попробовал внедрение зависимостей в Vaadin Framework. Я использовал выделенный Vaadin Spring Addon. Я также изменил VaadinServlet на SpringVaadinServlet, все еще не работает.
Есть мой MainView:
@Theme("mytheme")
@SpringUI
@ComponentScan
@Widgetset("net.elenx.MyAppWidgetset")
public class MainView extends UI {
@Autowired
private VerticalLayout template;
@Override
protected void init(VaadinRequest vaadinRequest) {
new AnnotationConfigApplicationContext(SpringConfig.class);
this.setContent(template);
}
@WebServlet(urlPatterns = "/*", name = "MyUIServlet", asyncSupported = true)
@VaadinServletConfiguration(ui = MainView.class, productionMode = false)
public static class MyUIServlet extends SpringVaadinServlet {
}
}
Панель навигации
@Configuration
@EnableVaadin
public class NavigationBar {
@Bean
HorizontalLayout navigationBar(Button hamburgerButton, Label elenxLogo) {
System.out.println("Hello from NavigationBar bean!");
HorizontalLayout navbar = new HorizontalLayout();
navbar.setWidth("100%");
navbar.setMargin(true);
navbar.setHeight(50, Sizeable.Unit.PIXELS);
navbar.addComponent(hamburgerButton);
navbar.addComponent(elenxLogo);
navbar.addStyleName("navigation-bar");
return navbar;
}
@Bean
Button hamburgerButton() {
Button hamburgerButton = new Button();
hamburgerButton.addStyleName("hamburger-button");
hamburgerButton.setIcon(VaadinIcons.MENU);
return hamburgerButton;
}
@Bean
Label elenxLogo() {
Label logo = new Label("ElenX");
logo.addStyleName("elenx-logo");
logo.setWidthUndefined();
logo.setEnabled(false);
return logo;
}
}
SpringConfig
@Configuration
@EnableVaadin
@Import(NavigationBar.class)
public class SpringConfig {
//Create whole view of MainView
@Bean
VerticalLayout template(HorizontalLayout navigationBar) {
System.out.println("Hello from template bean!");
VerticalLayout template = new VerticalLayout();
//NavigationBar navigationBar = new NavigationBar();
Sidebar sidebar = new Sidebar();
template.setMargin(false);
template.setSpacing(false);
template.setHeight("100%");
template.addComponent(navigationBar);
template.addComponent(sidebar.getSidebar());
template.setExpandRatio(sidebar.getSidebar(), 1.0f);
return template;
}
}
Что не так с этим кодом? Я понятия не имею, что происходит..
1 ответ
Хотя это старый вопрос.
Следовали ли вы инструкциям Spring Boot http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/ о том, как создать развертываемую войну?
Ваш класс Spring Boot Application должен расширять SpringBootServletInitializer
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure ( SpringApplicationBuilder application ) {
return application.sources ( Application.class );
}
public static void main ( String [] args ) {
SpringApplication.run ( Application.class, args );
}
}
Вы также можете проверить следующие проекты на GitHub.
Весенний ботинок и ваадин