2016-04-05 5 views
2

私はvaadinとvaadin4springアドオンで春のブートアプリケーションを持っています。 私のビューでは、私はデータベースにあるデータを表示したいと思います。表示したいデータは、サービスクラスのメソッドによって返されます。スプリングブート、Vaadin - cant autowireサービスのビュー

@Service 
public class UserService { 
    public List<Users> getUsers() .... 
} 

ビュー:サーバーの起動時にvaadin

@SpringView(name = Views.USERLIST) //static constant containing string "users" 
public class UserlistView extends HorizontalLayout implements View { 
    @Autowired 
    private UserService userService; 
    @PostConstruct 
    public void construct() { 
     displaytable(userService.getUsers()); 
    } 
    @Override 
    public void enter(ViewChangeListener.ViewChangeEvent viewChangeEvent) {} 

} 

UI class: 

@SpringUI 
@Theme("valo") 
public class TUI extends UI { 
     @Autowired 
     private SpringViewProvider springViewProvider; 

     protected void init(VaadinRequest request) { 
      .. 
      Navigator navigator = new Navigator(this, content); 
      navigator.addView(Views.USERLIST, UserlistView.class); 
      navigator.addProvider(springViewProvider); 

     } 
} 

はspringviewを認識 - "c.v.spring.navigator.SpringViewProviderは:1 SpringViewが見つかりました"、は例外または警告が表示されません。

私はナビゲータを表示するたびに、ビュー内のビュー(navigator.navigateTo("users"))autowiredフィールドは挿入されず、ポストプロセスメソッドは呼び出されません。 navigatorオブジェクトにビューを追加して、直接ビューにアクセスするためにURLを使用しないと、何が見知らぬ人ですか? - localhost:8080 /#!ユーザーは、フィールドが正しく注入され、メソッドconstruct()が呼び出されます。

それは私のコンフィギュレーションクラスがあるのに役立ちます場合

@Configuration 
@ComponentScan(basePackages = { "me.project" }) 
@EnableAutoConfiguration 
@EnableVaadinEventBus 
public class TheConfig { 
    // contains only one bean definition - sessionfactory 
} 

は、誰でも同様の問題に直面していますか?私はどこにでも助けを見つけることができませんでした誰も私が間違っていたことを教えてください。 あなたが

navigator.addView(Views.USERLIST, UserlistView.class); 

を行うとそれは春で扱われていないStaticViewProviderを作成し、「新しい」使用してビューを作成し、あなたに

+0

あなたは解決策を見つけましたか?私も同様の問題があり、V_Jの答えはうまくいかない。 – vitfo

答えて

1

ありがとうございます。したがって、 'addView'の場合は春のオートワイヤリングは行われません。 springViewProviderを使用している場合AutowiringはSpringによって処理されます。

したがって、navigator.addView()を実行しないでください。代わりに、Spring + Vaadinを使用する場合、springViewProviderに頼ってください。

関連する問題