現在、私はSpring BootとVaadinを利用してサンプル実装を作成しようとしています。私は春のマネージドBeanでvaadinナビゲータを初期化しようとしましたが、UIオブジェクトにアクセスする必要があります。 UI.getCurrentは、Spring管理対象BeanでNullを返します
は、私はクラスとインタフェースの多くを必要とMVPパターンを実装しますが、問題は、次のサンプルコードに沸く:@SpringUI
public class MyVaadinUI extends UI
{
@Autowired
private MainPresenter mainPresenter;
protected void init(VaadinRequest request)
{
setContent(mainPresenter.getView());
}
}
@UIScope
@SpringComponent
public class MainPresenterImpl implements MainPresenter
{
@Autowired
public MainPresenterImpl(MainModel model, MainView view)
{
super(model, view);
}
@PostConstruct
public void init()
{
UI ui = UI.getCurrent();
Assert.isNull(ui); // ui is always null
}
}
私はすでにUIのインスタンスはThreadLocal変数に保持されていることを読みました。私はそれをデバッグによって確認できました。私はなぜ有線豆MainPresenterが別のスレッドにあるのか分からない。それはまた、スコープの問題であってはならない。
これまでのところ、PresenterのUIインスタンスにアクセスしようとするまで、アプリケーションは正常に動作します。
VAADINのwikiは役に立たず、私はこのフォーラムで有益な答えを見つけることができませんでした。
このリストを確認しましたか? http://stackoverflow.com/search?q=vaadin+spring+autowire+null –
私が以前に見た検索結果のほとんど。 90%は誤設定のためにnullであるautowiredフィールドやSpringでインスタンス化されていないオブジェクトで@Autowireを使用していると不平を言っています。最後の10%は私の問題にも一致しません。 –