【问题标题】:Pass Data From One Controller To another Using Spring DI使用 Spring DI 将数据从一个控制器传递到另一个控制器
【发布时间】:2016-12-11 11:48:21
【问题描述】:

我有一个使用 Spring DI 框架的 javafx 应用程序。

我使用 SpringFXMLLoader<S,T> 这个类从 James Denver 的 this github 存储库中获取父节点和相关控制器。

我遇到的问题是将数据从一个控制器传递到另一个控制器,例如从一个控制器中的表中选择一个用户,然后将所选用户传递到另一个控制器并显示用户特定信息。

这是我尝试过的,因为我传递的对象在 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);

在这种情况下,我如何将数据从一个控制器传递到另一个控制器,即 Spring DI 注入 bean。

使用 Spring DI 时如何在 javafx 控制器中传递数据?

更新

任何人都需要额外的信息,我随时准备提供

【问题讨论】:

    标签: spring javafx dependency-injection


    【解决方案1】:

    我自己找到了解决方案。我的方法的问题首先超出了使用依赖注入的逻辑,因为它引入了控制器之间的依赖关系。

    解决方案

    使用Spring 发布和收听ApplicationEvents

    1. 我创建了一个采用User 对象的事件。
    2. UsersController 注册为 Publisher 使用选定的 User 发布此事件
    3. UserDetailController注册为Listener监听并从事件中获取选中的User

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-16
      相关资源
      最近更新 更多