将其他项目中的bean注入Vaadin视图

时间:2013-08-28 12:19:21

标签: java vaadin vaadin7

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

Vaadin观点:

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

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

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

我也知道有一些替代品,比如CDI-UtilsVaadin CDI Vaadin插件,以及some other解决方案,但它们似乎都注入了主要内容UI(不是视图)和Web应用程序本身,而不是其他模块。

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

问题:将来自其他模块的bean注入Vaadin视图的推荐方法是什么?为了实现这一目的,我需要做些什么?

后续问题:使用上述方法后,使用Tomcat进行此应用程序会出现问题吗?

1 个答案:

答案 0 :(得分: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附加组件