【发布时间】:2015-09-08 20:10:54
【问题描述】:
我正在尝试使用 Vaadin-cdi 注入我的组件和 bean。注意下面的代码被简化了一点。
@Theme("valo")
@CDIUI("")
public class MyUI extends UI {
@Inject
private CDIViewProvider provider;
@Override
protected void init(VaadinRequest request) {
Navigator navigator = new Navigator();
navigator.addProvider(provider);
navigator.navigateTo("mypanel");
}
}
MyPanel 如下:
@CDIView("mypanel")
public class MyPanel extends com.vaadin.ui.Panel implements View {
@Inject
private MySubPanel mySubPanel;
@Override
public void enter(ViewChangeListener.ViewChangeEvent event) {
FormLayout layout = new FormLayout();
layout.addComponent(mySubPanel);
this.setContent(layout);
}
}
这里是 MySubPanel 类:
@UIScoped
public class MySubPanel extends Panel {
@Inject
private MyBean myBean;
public MySubPanel() {
myBean.createSomething("Something"); // throws NullPointerException
}
}
最后是 MyBean 类:
@Stateless
@Default
public class MyBean implements Serializable {
private String something;
public void createSomething(String something) {
this.something = something;
}
}
那么为什么我在MySubPanelbeeing 中的bean 没有注入呢?
我有一个空的beans.xml,我正在使用 WildFly 8.1。
【问题讨论】:
-
你厌倦了@EJB 而不是@Inject?
标签: jakarta-ee vaadin cdi vaadin7