Внедрение зависимости вызывает исключение нулевого указателя в соке gavafx - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть следующий класс

public class InitialSetupWizardData {
   private final SimpleStringProperty licence_type = new SimpleStringProperty(this,"licenceType","");

  public String getLicence_type() {
    return licence_type.get();
  }

  public SimpleStringProperty licence_typeProperty() {
    return licence_type;
  }

  public void setLicence_type(String licence_type) {
    this.licence_type.set(licence_type);
  }
}

Теперь я хотел бы добавить это к моему контроллеру javafx.Я добавил следующее

public class Controller implements Initializable {
   @Inject
   InitialSetupWizardData data;

   @Override
   public void initialize(URL location, ResourceBundle resources) {
     data.setLicence_type("Am cool");
   }
}

. Выше всегда выдает исключение нулевого указателя в data.set ... Что я пропускаю, так как использую библиотеку Google Сок

1 Ответ

0 голосов
/ 23 февраля 2019

Впрыск не происходит автоматически.Для объектов контроллера, создаваемых FXMLLoader, внедрение не происходит.

Чтобы изменить это, используйте controllerFactory при загрузке fxml.В следующем примере требуется Injector, настроенный для правильного создания экземпляра класса контроллера:

Injector injector = ...
FXMLLoader loader = new FXMLLoader(url);
loader.setControllerFactory(injector::getInstance);
Parent parent = loader.load();
...