jakarta-ee - 我无法使用 @Inject 和 Vaadin CDI 实例化我的 bean

标签 jakarta-ee vaadin cdi vaadin7

我正在尝试使用 Vaadin-cdi 注入(inject)我的组件和 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;
    }
}

那么为什么我的 MySubPanel 中的 bean 没有被注入(inject)呢?

我有一个空的 beans.xml 并且我正在使用 WildFly 8.1。

最佳答案

在构造函数中类变量尚未注入(inject)。该bean将在初始化后注入(inject),因此在构造函数中它为null。你有两种可能性。

  • 在构造函数中注入(inject) Bean。
  • 在带有@PostConstruct注释的init方法中使用bean

我推荐第二种方法。在这里您可以找到有关不同注入(inject)方法的更多信息:http://www.javacodegeeks.com/2013/05/java-ee-cdi-dependency-injection-inject-tutorial.html

关于jakarta-ee - 我无法使用 @Inject 和 Vaadin CDI 实例化我的 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30995813/

相关文章:

java - 静态 HTML 页面的 Spring View 解析器

java - 学习 Java EE 及相关技术的路线?

java - 修改 HTTP 头并重定向到其他 Web 应用程序(跨应用程序)

javascript - 如何将 vaadin-icon 导入 React 组件?

java - 如何检测vaadin TextArea中的回车键按下

java - 在 JSF 中使用构建器模式?

java - JSF 2.0 - 即使第一个 validator 失败也会调用第二个 validator

java - DefaultWindowContextQuotaHandler 和 JsfWindowContextQuotaHandler 之间的 DeltaSpike 模糊依赖

java - 异步方法的默认 EJB 事务模式?

java - 避免 Java Web 应用程序中的乐观锁定