如何在JavaFX 2应用程序中正确使用Weld?

时间:2012-04-21 20:21:08

标签: javafx-2 jboss-weld

我正在努力让Weld在我的JavaFX 2(SE)应用程序中工作(或者我应该在Weld中说JavaFX?)。我有控制器响应用户交互。现在我想将我的服务(如数据库服务)注入这些控制器。

使用Weld,这应该像以下一样简单:

@Inject
private MyService service;

现在,为了初始化Weld,有三种选择 选项1)

public void main(@Observes ContainerInitialized event) {
    launch(); // start JavaFX
}

选项2)

public static void main(final String[] args) {
    new StartMain(args).go();
    launch(args);
}

选项3)

public static void main(final String[] args) {
    final WeldContainer weld = new Weld().initialize();
    service = weld.instance().select(MyService.class).get();
    launch(args);
}

选项1和2导致我的控制器中出现NullPointerExceptions,因为在注释注入点没有注入任何内容。只有选项3有效,但这不是我真正需要的,因为我不想在我的主应用程序类中使用该服务,而是在我的JavaFX控制器中。使用选项3,我必须以某种方式将初始化的服务传递给我的控制器类,在这种情况下,我不需要焊接。那么如何将服务bean注入JavaFX控制器?不幸的是,我没有找到关于我的问题的文档。

也许有人积累了使用Weld和JavaFX的经验,可以帮助我。

更新

我在Weld discussion forum写下了我的一些努力,但遗憾的是我没有得到答案。在我看来,Weld不适用于JavaFX。我想我必须使用优秀的旧设置器将我的服务插入我的控制器(请参阅论坛以获得解决方案)。

更新2

我找到了blog about Weld and JavaFX 2。我还没有尝试过解决方案,但我认为它对其他程序员很有用。

0 个答案:

没有答案