我有这两个类,并希望使用MyData方法在MyBean中插入数据。
@Named
@RequestScoped
public class MyBean implements Serializable {
@Inject
private MyData myData;
public MyBean() {
// NullPointerException, because myData is null
this.dataList = myData.method();
}
...
}
@Singleton
class MyData {
method(){
...
}
}
另一只手上的MyData注入一个控制器类myHandler:
@Singleton
public class myHandler {...}
我不断收到错误消息,myData.method()
为空并且不知道它。也许我还没有完全理解CDI注射意味着什么?
编辑: 这些是完全合格的注释。
import javax.ejb.Singleton;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.inject.Named;
Edit2:使用的容器是一只野生动物11.由于我也使用Maven,我的项目结构没有太多错误,因为我必须遵循Maven规则。
正如我之前提到的,服务器在我的数据库上运行正常,我之前使用过CDI和JSF。我刚刚将MyBean和MyData添加到我的项目中。
我试过@Startup
,结果没有改变。
Edit3:我不认为它是重复的,因为我试图使用@DependsOn()
注释并仍然返回null。 NullException不是来自bean,而是来自JavaScript,我想在其中插入一个带有JSF的String,稍后将其处理为图表。 stacktrace说,这个函数将null值传递给bean的构造函数中的成员变量。
答案 0 :(得分:-2)
您是否错误地使用过EJB Singleton? CDI无法识别javax.ejb.Singleton,因此不会被接收。
对于CDI,请使用javax.inject.Singleton或@ApplicationScoped。