Связывание FXML и контроллера в конфигурации модуля Guice
В моем модуле Guice я хочу связать файлы FXML и их контроллеры, в настоящее время это выглядит так:
public class GuiceModule extends AbstractModule
{
@Override
protected void configure()
{
// associate controllers and fxml files
bind(MainController.class).toInstance((MainController)loadController("/main.fxml"));
bind(SubController.class).toInstance((SubController)loadController("/content.fxml"));
}
protected Object loadController(String url)
{
InputStream fxmlStream = null;
try
{
fxmlStream = getClass().getResourceAsStream(url);
FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getResource(url));
loader.setControllerFactory(new Callback<Class<?>, Object>() {
public Object call(Class<?> clazz) { // clazz because class is a reserved word
return injector.getInstance(clazz); // PROBLEM: no access to the injector here
}
});
loader.load(fxmlStream);
return loader.getController();
}
// [..] exception handling
}
}**strong text**
Однако вloadController(String url)
Метод, который я получаю проблемы с этой строкой:
return injector.getInstance(clazz); // PROBLEM: no access to the injector here
Как я могу получить доступ к Guice'sgetInstance
метод из модуля Guice? Это или что-то эквивалентное возможно?