javacontrollerjavafx-2javafxviewcontroller

How can I use a variable from another Controller in JavaFX


I have two scenes Login.fxml and MainView.fxml and two diferent controllers LoginController.java and MainViewControler.java

In LoginController I do the whole process to login and get the value of JSessionID and store it in a object, like below:

loginGateway = loginGateway(gateway);

Now in MainViewController I need to use the this object (loginGateway) to getJSessionID and make other requests to the server. But how can I acess this object in another Controller Class (MainViewController.java) ????


Solution

  • Update 2023

    As noted in the referenced question:

    An alternate solution to that presented here is to use MVC, similar to as documented in:

    The solution presented here is still perfectly OK, but you might have a bit more flexibility (and a bit more complexity) by adopting the MVC approach instead.


    Use a variation on the solution in Passing Parameters JavaFX FXML.

    Setup a LoginManager which has a reference to both the LoginController and the MainViewController.

    1. The loginManager creates a login screen using the loginController and passes a reference to itself to the loginController.
    2. When login has passed, the loginController notifies the loginManager of the login sessionID.
    3. The loginManager can then create a MainViewController, passing the mainViewController the sessionID and replacing the scene contents with the main view.

    Here is a link to some sample code to demonstrate this approach. login screen mainview screen