В моем приложении, используя связку spring & javafx-weaver, я пытаюсь создать таблицу с раскрывающимися полями org.controlsfx.control.table.TableRowExpanderColumn.
tableUser.setItems(usersObservableList);
tableColumn1.setCellValueFactory(param -> new SimpleStringProperty(param.getValue().getDepartment().getName()));
tableColumn2.setCellValueFactory(param -> new SimpleStringProperty(param.getValue().getLogin()));
tableColumn3.setCellValueFactory(param -> new SimpleStringProperty(param.getValue().getProfile().toStringFIO()));
TableRowExpanderColumn<User> tableExpanderColumn = new TableRowExpanderColumn<>(param -> {
FxControllerAndView<UserEditExpanderController, GridPane> userEditExpander = getFxWeaver().load(UserEditExpanderController.class);
GridPane nodeGridPane = userEditExpander.getView().orElse(new GridPane());
UserEditExpanderController userEditExpanderController = userEditExpander.getController();
userEditExpander.getController().setData(param.getValue());
return nodeGridPane;
}
tableUser.getColumns().add(0, tableExpanderColumn);
Идет инициализация как и должно быть, но при редактировании полей я понимаю, что используется один экземпляр контроллера. То есть тот, который был инициализирован в последний раз.
снимок экрана
Как получить собственный экземпляр контроллера для каждого представления? Как многократно использовать один контроллер и представление в таблице?
Насколько я понимаю, getFxWeaver().load(UserEditExpanderController.class)
загружает один и тот же экземпляр контроллера, но в то же время создает новое представление.