2015-11-10 3 views
1

Я вернулся Нет UIProvider добавлен и нет ошибки параметра инициализации UI после того, как я пробовал инъекцию зависимостей в Vaadin Framework. Я использовал специальный Ванадский Весенний Аддон. Я также изменил VaadinServlet на SpringVaadinServlet, все еще не работает.Добавлен UIProvider и нет параметра инициализации «UI» Ошибка Vaadin после интеграции с весной

Существует мой 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; 
    } 
} 

Что не так с этим кодом? Я не знаю, что происходит.

+0

Как вы используете приложения, пружинные загрузки или простой старый веб-приложение? – Morfic

+0

web-приложение, я говорю об этом на tomcat – Zeezl

+0

У вас также есть что-то настроенное в вашем 'web.xml'? По его мнению, ваш весенний контекст не инициализируется при запуске или приложение неправильно настроено для его использования. – Morfic

ответ

2

Хотя это старый вопрос.

Вы писали инструкции у Весенней загрузки http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-create-a-deployable-war-file о том, как создать развертываемую войну?

Ваш класс Spring загрузки приложений необходимо расширяет 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.

Spring загрузка и Vaadin

Vaadin 7 https://github.com/mike-goetz/spring-boot-vaadin7

Vaadin 8 https://github.com/mike-goetz/spring-boot-vaadin

 Смежные вопросы

  • Нет связанных вопросов^_^