JavaFX LoadException при передаче значения между контроллерами

Я попытался создать многопользовательскую форму входа в систему, но у меня возникла проблема с передачей значения с одного контроллера на другой, и я действительно не знаю, что происходит.

Первый контроллер

public class Controller implements Initializable{

    public Pracownik pracownik = new Pracownik();

    @FXML
    private Label isConnected;

    @FXML
    private TextField txtUsername;

    @FXML
    private TextField txtPass;

    private Connection conn;

    // private ObservableList<Pracownik> lista = FXCollections.observableArrayList();

    public void initialize(URL url, ResourceBundle rb){
        conn = DBConnection.getConnection();

        //   lista = new Pracownik().getAll(conn);
    }

    public void login(ActionEvent event){
        try {
            if (pracownik.isLogin(conn, txtUsername.getText(), txtPass.getText()) ){

                isConnected.setText("Correct");

                if (pracownik.stanowisko(conn, txtUsername.getText(), txtPass.getText()) == 1){

                    Stage primarystage = new Stage();
                    FXMLLoader loader = new FXMLLoader();
                    Pane root = loader.load(getClass().getResource("/sample/BossView.fxml").openStream());
                    //BossController controller = (BossController) loader.getController();
                    Scene scene = new Scene(root);
                    primarystage.setScene(scene);
                    primarystage.show();
                }
                else {

                    Stage primarystage = new Stage();
                    FXMLLoader loader = new FXMLLoader();
                    Pane root = loader.load(getClass().getResource("/sample/EmployerView.fxml").openStream());
                    EmployerController controller = loader.getController();
                    controller.getUser(txtUsername.getText());


                    Scene scene = new Scene(root);
                    primarystage.setScene(scene);
                    primarystage.show();


                }
            }

            else{
                isConnected.setText("Błędne dane");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }catch (IOException e){
            e.printStackTrace();
        }

    }
}

И второй контроллер, куда я хочу передать txtUserName

package sample;

import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;

import java.net.URL;
import java.util.ResourceBundle;

public class EmployerController implements Initializable {


    String value;

    public void setValue(String value) {
        this.value = value;
    }

    @FXML
    private  static Label imie;

    @FXML
    private Label nazwisko;

    @FXML
    private Label mail;

    @FXML
    private Label numer;



    @Override
    public void initialize(URL url, ResourceBundle resourceBundle) {

        imie.setText(value);

    }

    public void getUser(String user){

        setValue(user);

    }

}

И это исключение появляется после попытки входа в систему

javafx.fxml.LoadException: 
unknown path

я узнал что

 imie.setText(value);

вызвать это исключение. Без него все нормально.

Примечание:LoadException редко (если вообще когда-либо) будет основной причиной ваших ошибок. Убедитесь, что вы просмотрели всю трассировку стека (длинный список ошибок, выдаваемых компилятором Java) и нашли строки, начинающиеся с Caused by:. Вот где вы найдете фактическое исключение. В вашем случае я предполагаю, что вы увидите NullPointerException (и он укажет прямо на строку, вызывающую ошибку).
Zephyr 09.06.2019 02:43
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
43
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Значение переменной по-прежнему равно нулю при вызове в методе инициализации контроллера работодателя. В вашем примере вы можете просто изменить свой метод getUser следующим образом:

public void getUser(String user){

    setValue(user);
    imie.setText(value);

}

Кроме того, метод, который фактически устанавливает значение, не должен называться "get...", и, скорее всего, не рекомендуется объявлять метку статической.

Другие вопросы по теме