Фабрика пользовательских контроллеров JavaFX

Я экспериментировал сFXMLLoader и используяsetControllerFactory метод с использованием пользовательскихCallback<P,R> реализация.

Документация ORACLE говорит следующее:

Реализация может вернуть нулевое значение, чтобы указать, что она не создает или не может создать контроллер данного типа; в этом случае механизм построения контроллера по умолчанию будет использоваться загрузчиком.

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

Так что, если у меня есть следующий простой файл FXML, который используетViewController класс, который не принимает параметров ...

<StackPane fx:id="pane"
          xmlns:fx="http://javafx.com/fxml"
          fx:controller="my.package.ViewController">
</StackPane>

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

loader.setControllerFactory(new Callback<Class<?>, Object>(){
    @Override
    public Object Call(Class<?> type) {
        return null; // Let the FXMLLoader handle construction...
    }
});

после вызоваload() Метод мой метод инициализации вViewController класс никогда не вызывается (я проверял это с точкой останова).

Если я изменю свою реализацию фабрики контроллера, чтобы возвратить экземплярViewController класс то все работает как положено.

Может ли кто-нибудь помочь мне разобраться в моем замешательстве? Я используюCallback интерфейс неправильно или документация ORACLE неверна?

Ответы на вопрос(1)

Ваш ответ на вопрос