Je n'ai pas de bean qualifiant de type [com.vaadin.ui.HorizontalLayout] trouvé pour une erreur de dépendance lorsque j'essaie d'injecter l'argument d'un autre fichier de configuration comme ceci: Main Config:Aucun bean qualifié de type trouvé pour la dépendance, vaadin
@Configuration
@EnableVaadin
@Import(NavigationBar.class)
@ComponentScan("net.elenx")
public class SpringConfig {
//Create whole view of MainView
@Bean
VerticalLayout template(@Qualifier("navigationBar") HorizontalLayout navigationBar) {
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;
}
}
config Deuxième:
@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;
}
}
Alors, quelle est la façon Corrent de réaliser cette injection? Je veux avoir des beans pour chaque élément et juste les injecter pour construire une mise en page entière. Quand j'ai essayé de changer cette ligne:
@Bean
VerticalLayout template(HorizontalLayout navigationBar) {
à ceci:
@Bean
VerticalLayout template(@Qualifier("navigationBar") HorizontalLayout navigationBar) {
je suis arrivé "Impossible de haricot doit lier automatiquement Qualifier de type 'composant'." Erreur. Je suis frais au printemps et je ne suis pas sûr de ce que j'ai mal fait, ne devrait pas correspondre à ma méthode de navigation HorizontalLayout avec le paramètre du modèle VerticalLayout (HorizontalLayout navigationBar)?
ok Je vois, alors quelle est la meilleure façon d'écrire des modules d'interface utilisateur comme les barres latérales, navbars dans Vaadin? Je me soucie du meilleur code possible, merci pour votre réponse! – Zeezl
De rien, j'ai édité ma réponse en conséquence. –