2016-12-11 23 views
0

Spring DIフレームワークを使用するjavafxアプリケーションがあります。1つのコントローラから別のコントローラへデータを渡すSpring DI

このクラスを使用して、SpringFXMLLoader<S,T>は、親ノードと関連コントローラをthis githubリポジトリからJames Denverによって取得します。

私が抱えている問題は、1つのコントローラのデータをあるコントローラから別のコントローラに渡し、選択したユーザーを別のコントローラに渡してユーザー固有の情報を表示することです。

これは私が試したものです、私は渡されたオブジェクトがnullであるようUserDetailController

SpringFXMLLoader<Parent, UserDetailController> loader = 
     SpringFXMLLoader.create() 
      .applicationContext(applicationContext) 
      .location(getClass().getResource("/fxml/userDetail.fxml")) 
      .build(); 
Parent userDetailNode = loader.load(); 
      UserDetailController userDetailController = loader.getController(); 
      User user = tblUsers.getSelectionModel().getSelectedItem(); 

      userDetailController.setUser(user); 
rootController.getViewContentPane().setCenter(userDetailNode); 

では動作しませんでした私は、この場合、別のコントローラからのデータを渡すことができる方法、すなわち春のDIが注入豆。

Spring DIを使用しているとき、javafxコントローラの周りをどのようにデータを渡すことができますか?

誰でも余分な情報を必要とするアップデートは、私はいつでも

答えて

0

私は解決策を見つけた自分自身を提供する準備ができています。私のアプローチの問題は、コントローラ間の依存関係が導入されたため、まず依存性注入を使用するロジックに勝ちます。 ApplicationEventsを公開して聞くSpringを使用して

ソリューション

  1. 私はUserオブジェクトを取るイベントを作成しました。 PublisherListenerとして登録選ばUser
  2. UserDetailControllerでこのイベントを発行して登録
  3. UsersControllerは耳を傾け、イベント
から選択 Userを取得します
関連する問題