2013-06-21 2 views
1

SpringVaadinIntegration 애드온에서 Spring과 Vaadin을 사용하는 어플리케이션을 개발 중입니다. 이제 Vaadin UI 클래스에 서비스를 삽입 할 때마다 문제가 해결됩니다. 다른 클래스에이 주석을 사용Vaadin Spring 통합 애드온이 작동하지 않습니다.

이이 MyUI에 사실 MYSERVICE에서 @Autowired 일 내 주요 angel이라는 UI 클래스

@Component 
@Scope("prototype") 
public class MyUI extends UI 
{ 

@Autowired 
private transient ApplicationContext applicationContext; 

@Autowired 
private MyService myService; 

private MainPanel mainPanel; 

private VerticalLayout verticalLayout; 




@Override 
protected void init(VaadinRequest request) { 
    // TODO Auto-generated method stub 


    verticalLayout = new VerticalLayout(); 

    mainPanel = new MainPanel(); 
    verticalLayout.addComponent(mainPanel); 
    setContent(verticalLayout); 


} 
    } 

이다이면 MyService

@Component 
@Scope("session") 
public class MyService { 

public MyService() { 
    // TODO Auto-generated constructor stub 
} 

public String getLabel(){ 
    return "this is my label"; 
} 

public void saveUser(Utente utente){ 
    System.out.println("save user"); 
} 

} 

입니다 주 패널에서 작동하지 않는 동안 null이 아닙니다.

@Component 
public class MainPanel extends CustomComponent implements View { 

private VerticalLayout mainLayout; 

private Button button; 

@Autowired 
MyService secondService; 

public MainPanel() { 
    buildMainLayout(); 
    setCompositionRoot(mainLayout); 

    // TODO add user code here 
} 

@AutoGenerated 
private VerticalLayout buildMainLayout() { 
    // common part: create layout 
    button = new Button(); 
    mainLayout = new VerticalLayout(); 
    mainLayout.addComponent(button); 

    button.addClickListener(new Button.ClickListener() { 

     @Override 
     public void buttonClick(ClickEvent event) { 
      // TODO Auto-generated method stub 
      secondService.saveUser(new Utente()); 

     } 
    }); 


    return mainLayout; 
} 
} 

여기서 사용자를 저장하려고하면 서비스가 null입니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

안녕하세요. 나는 똑같은 문제를 겪고있다. 문제가 뭔지 알아 냈어? – RAN

+0

나는 다른 방법으로 해결했습니다. 만약 당신이 어떤 조언을 원한다면 어떻게 연락 드릴 수 있습니까? – Skizzo

+0

감사합니다. 그러나 나는 그것을 어떻게 다룰 지 짐작했습니다. https://vaadin.com/forum#!/thread/1811101 – RAN

답변

0

"새로운 MainPanel();"으로 MainPanel을 만들었습니다. 메인 패널은 스프링 빈이 아니므로 어떤 주입도 일어나지 않습니다.

MainPanel을 어쩌면 ptototype 범위의 스프링 주입으로 바꾸면 MainPanel 내의 모든 주입이 괜찮습니다.

관련 문제