2015-12-29 1 views
0

Je développe un web d'application avec Spring Boot et Vaadin pour l'interface de l'application.Contrôleur d'injection dans Vaadin vue Spring Boot

Mon problème est que le contrôleur ne peut pas voir le contrôleur, l'application démarre correctement, mais le bean est nul en exécution.

Mon contrôleur:

@Component 
public class ViewController { 

/** Inyección de Spring para poder acceder a la capa de datos.*/ 
@Autowired 
private CommonSetup commonSetup; 

/** 
* This method gets the user from db. 
*/ 
public Temployee getUser(String username, String password) { 
    Temployee empl = null; 
    // get from db the user 
    empl = commonSetup.getUserByUsernameAndPass(username, password); 

    // return the employee found. 
    return empl; 
} 

... ...

Mon point de vue:

@Theme("login") 
@SpringUI 
public class LoginView extends CustomComponent implements View ,Button.ClickListener { 

/** The view controller. */ 
@Autowired 
private ViewController vContr; 

public LoginView() { 
    setSizeFull(); 

    ... 
    ... 

    // Check if the username and the password are correct. 
    Temployee empleado = vContr.getUser(username, password); 

Dans le LoginView la bean ViewController est nulle. Comment puis-je attribuer le bean dans la vue?

Merci.

Répondre

0

Vous ne pouvez pas accéder à un champ autowired dans le constructeur car l'injection n'est pas encore effectuée à ce stade. Ajouter une méthode avec une annotation @PostConstruct qui sera exécutée après les champs sont injectés:

@PostConstruct 
public void init() { 
    // Check if the username and the password are correct. 
    Temployee empleado = vContr.getUser(username, password); 
} 

Ceci est rien de particulier à vaadin4spring, voici comment fonctionne de printemps.