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.

Весенний ботинок и ваадин

Ваадин 7 https://github.com/mike-goetz/spring-boot-vaadin7

Ваадин 8 https://github.com/mike-goetz/spring-boot-vaadin

Другие вопросы по тегам