1

在我的一个 Vaadin 视图中,我试图通过使用 @Inject 注入来获取驻留在另一个项目 (bll) 中的业务对象。

瓦丁观点:

public class FruitSaladView extends VerticalLayout implements View {
    @Inject
    BananaService bananaService;
...
}

我不能这样做,当然,bananaService 对象在运行时为空,因为我无处可对包进行组件扫描。

我正在使用注释,所以我的 Vaadin Web 项目中没有 web.xml,我什至没有 WEB-INF 文件夹。

我也知道有一些替代方案,例如CDI-UtilsVaadin CDI Vaadin 插件,以及其他一些解决方案,但它们似乎都将东西注入主 UI(而不是视图)和网络应用程序本身,而不是来自其他模块。

我正在使用 Vaadin 7 和 Tomcat 7(只要在给出以下问题的答案的情况下使用 Tomcat 可行)

问题:将 bean 从另一个模块注入 Vaadin 视图的推荐方法是什么,我需要做什么才能完成此操作?

追问:使用上述方法后,这个应用使用Tomcat会不会有问题?

4

1 回答 1

1

Tomcat 只是 Servlet 容器,如果你想使用 CDI,你必须使用 JEE6 兼容的服务器,比如 tomee 或 jboss。如果您对集成 Vaadin 和 CDI 的最佳实践感兴趣,我建议您从以下地址开始:http: //www.adam-bien.com/roller/abien/entry/essential_vaadin_7_java_ee

您写道,您想直接注入 bean Vaadin 视图。分析示例代码https://github.com/vaadin/cdi/blob/master/vaadin-cdi-example/src/main/java/com/vaadin/cdi/example/view/RootView.java学习如何做带有 vaadin-cdi 插件

于 2013-08-28T20:28:39.257 回答