JWT без OpenSSL

Проблема описана в трассировке стека:

Caused by: java.lang.NoSuchMethodException: com.buddhikajay.controller.NewTransactionDialogController.()

, которая в основном говорит, что ваш класс контроллера не имеет конструктора с нулевым аргументом.

По умолчанию FXMLLoader создаст контроллер, вызвав его конструктор с нулевым аргументом. Удалите конструктор, который вы определили в классе контроллера, или удалите требуемые параметры.

Если вам действительно нужно передать аргументы конструктору контроллера, вы можете либо создать контроллер в Java-коде, либо передать его в FXMLLoader:

NewTransactionDialogController controller = new NewTransactionDialogController(someValue);
FXMLLoader loader = new FXMLLoader();
loader.setLocation(...);
loader.setController(controller);
AnchorPane anchorPane = loader.load();

(используя этот код, вы должны удалить атрибут fx:controller из FXML.)

Или установить фабрику контроллера:

FXMLLoader loader = new FXMLLoader();
loader.setLocation(...);
loader.setControllerFactory(clazz -> {
    if (clazz == NewTransactionDialogController.class) {
        return new NewTransactionDialogController(someValue);
    } else {
        // default behavior:
        try {
            return clazz.newInstance();
        } catch (Exception exc) {
            throw new RuntimeException(exc);
        }
    }
});

AnchorPane anchorPane = loader.load();

(в этой версии оставить атрибут fx:controller в файле FXML.)

1
задан Jonathan Card 13 July 2018 в 17:53
поделиться