Я попытался создать многопользовательскую форму входа в систему, но у меня возникла проблема с передачей значения с одного контроллера на другой, и я действительно не знаю, что происходит.
Первый контроллер
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);
вызвать это исключение. Без него все нормально.




Значение переменной по-прежнему равно нулю при вызове в методе инициализации контроллера работодателя. В вашем примере вы можете просто изменить свой метод getUser следующим образом:
public void getUser(String user){
setValue(user);
imie.setText(value);
}
Кроме того, метод, который фактически устанавливает значение, не должен называться "get...", и, скорее всего, не рекомендуется объявлять метку статической.
LoadExceptionредко (если вообще когда-либо) будет основной причиной ваших ошибок. Убедитесь, что вы просмотрели всю трассировку стека (длинный список ошибок, выдаваемых компилятором Java) и нашли строки, начинающиеся сCaused by:. Вот где вы найдете фактическое исключение. В вашем случае я предполагаю, что вы увидитеNullPointerException(и он укажет прямо на строку, вызывающую ошибку).