我是JavaEE编程的新手,我在使用@Injection时遇到了困难。为了让mysels熟悉数据库,我决定创建一个简单的CRUD应用程序并遵循这个例子:https://code.google.com/p/javaee6-crud-example/source/browse/我创建了基本相同的文件但不知何故,我在@EJB之后得到一个空异常。
@RequestScoped
@ManagedBean
public class MainUcenci {
private List<Ucenec> ucenci;
@EJB
private ServletDAO servletDao;
@PostConstruct
public void init(){
ucenci = servletDao.getUcenci();
}
public List<Ucenec> getUcenci(){
return ucenci;
}
}
在测试之后我发现当调用init()时,servletDao仍然是null,尽管它应该在那时被注入(不是init方法的全部点,它是在所有注入后调用的吗?)。
这里也是ServletDao代码的相关部分
@Stateless
public class ServletDAO {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("$objectdb/db/sola_ucenec.odb");
EntityManager ucenecEm = emf.createEntityManager();
public List<Ucenec> getUcenci() {
List<Ucenec> ucenecList = null;
ucenecList = ucenecEm.createQuery("SELECT g FROM Ucenec g", Ucenec.class).getResultList();
return ucenecList;
}
}
P.S。在JSF中,我称之为:
<ui:repeat value="#{mainUcenci.ucenci}" var="item">