Witam, piszę aplikację w javafx, wykorzystując bazę h2. Wykorzystuję wzorzec projektowy mvc.
W aplikacji mam VisitMainController, który posiada dostęp do drugiego kontrolera SelectProductsController.
Do kontrolerów jest wspólny model VisitDataModel.
W kontrolerze VisitMainController wywołuję metodę zapisu wizyty, poprzedza ją metoda zapisu wyboru produktów(wywołana w SelectProductsController). W modelu wizyty znajduje się klucz obcy do wyboru produktów.
Obie metody znajdują się VisitDataModel. Obie metody wywołuję pod jednym przyciskiem.
Wszystkie potrzebne elementy do zapisu wyboru produktów są zbindowane w SelectProductsController.
Jak przypisać id_wybór_produktu do wizyty.
Inne elementy przypisuję w następujący sposób:
comboBoxPurposeVisit.valueProperty().bindBidirectional(this.visitDataModel.getVisitDataFxObjectProperty().celWizytyFxProperty());
dataPickerDateVisit.valueProperty().bindBidirectional(this.visitDataModel.getVisitDataFxObjectProperty().dataBadaniaProperty());
W kolejnym przypadku wykorzystuję listenera w innym widoku i kontrolerze:
this.tableViewKlienci.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
buttonAddCustomerVisit.setOnAction(actionEvent -> {
FXMLLoader loader = FxmlUtils.getLoader("/fxml/NewVisitMainScreen.fxml");
Scene scene = null;
try {
scene = new Scene(loader.load());
} catch (IOException e) {
DialogsUtils.errorDialog(e.getMessage());
}
VisitMainController controller = loader.getController();
controller.getCustomerDataModel().setCustomerDataFxObjectPropertyVisit(newValue);
controller.initBindings();
Stage stage = new Stage();
stage.setScene(scene);
stage.setTitle("Nowa wizyta");
stage.initModality(Modality.APPLICATION_MODAL);
stage.showAndWait();
});
});
a w VisitMainController ustawiam klucz obcy w taki sposób:
visitDataModel.getVisitDataFxObjectProperty().setKlientFx(this.getCustomerDataModel().getCustomerDataFxObjectPropertyVisit());
Proszę o jakąś podpowiedź.