У меня есть приложение JavaFX + Spring Boot. Когда я пытаюсь загрузить новый FXML с его контроллером, он работает нормально, но когда я загружаю его второй или третий раз, он дает мне тот же экземпляр и не создает новый.
Мой загрузчик FXML выглядит следующим образом:
public <T> T loadAndGetController(String fxmlPath) throws IOException {
FXMLLoader loader = new FXMLLoader();
loader.setControllerFactory(context::getBean); // Spring now FXML Controller Factory
loader.setLocation(getClass().getResource(fxmlPath));
loader.setResources(ResourceBundle.getBundle("language/lang",
new Locale(languageController.getLanguage().getValue(), languageController.getLanguage().toString())));
loader.load();
return loader.getController();
}
Загрузка нового FXML:
TabController tabController = (TabController) StageManager.loadAndGetController(FXMLViews.TAB.getFxmlFile());
И когда я пытаюсь добавить его в свой список загруженных контроллеров, идентификаторы совпадают с хэш-кодами, что означает, что это один и тот же экземпляр. Таким образом, он не создал новый.
Возможно, я неправильно загружаю свои FXML, или в этом случае просто фабрика контроллеров Spring-Boot работает странно. Какие-либо предложения?
context
и как реализованоgetBean
? Если есть только один экземплярcontext
и он всегда возвращает один и тот же контроллер, то он всегда будет только один. - person Itai   schedule 13.04.2017