Boa noite,
Não se o título ficou legal para o que precisa, mas vamos lá…
Estou usando um Java EE 6, e logo no começo estou com problema, como recuperar um bean do escopo em um outro bean, sem usar o FacesContext e talz.
Estava lendo alguns materiais mas não se estou certo, eu usaria o @Inject? Através de DI (Dependency Injection)? Como proceder?
Vai meu código:
@Stateless
public class ProdutoEJB implements ProdutoEJBRemote {
@PersistenceContext(unitName = "enterprisePU")
private EntityManager em;
public Produto create(Produto produto) {
em.persist(produto);
return produto;
}
public Produto update(Produto produto) {
return em.merge(produto);
}
public void delete(Produto produto) {
em.remove(em.merge(produto));
}
} //fim da classe ProdutoEJB
@ManagedBean
@SessionScoped
public class ProdutoController {
@EJB
private ProdutoEJBRemote produtoEJB;
private Produto produto = new Produto();
public String doCreate() {
produto = produtoEJB.create(produto);
return "index.xhtml";
}
public String doUpdate() {
produto = produtoEJB.update(produto);
return "index.xhtml";
}
public String doDelete() {
produtoEJB.delete(produto);
return "index.xhtml";
}
//getters e setters omitidos
} //fim da classe Produto Controller
@Stateless
public class ProdutoEanEJB implements ProdutoEanEJBRemote {
@PersistenceContext(unitName = "enterprisePU")
private EntityManager em;
public ProdutoEan create(ProdutoEan produtoEan) {
em.persist(produtoEan);
return produtoEan;
} //fim da classe
public ProdutoEan update(ProdutoEan produtoEan) {
return em.merge(produtoEan);
}
public void delete(ProdutoEan produtoEan) {
em.remove(em.merge(produtoEan));
}
} //fim da classe
@ManagedBean
@RequestScoped
public class ProdutoEanController {
@EJB
private ProdutoEanEJBRemote produtoEanEJB;
private ProdutoEan produtoEan = new ProdutoEan();
public String doCreate() {
produtoEan = produtoEanEJB.create(produtoEan);
return "index.xhtml";
}
public String doUpdate() {
produtoEan = produtoEanEJB.update(produtoEan);
return "index.xhtml";
}
public String doDelete() {
produtoEanEJB.delete(produtoEan);
return "index.xhtml";
}
//getters e setters omitidos
} //fim da classe
Na tela de produtos, teria um link para cadastro de ean (código de barra), onde ao carregar a tela de cadastro de ean já puxaria o produto, para amarrar ambos. Já fiz a JPA da relação, mas não consigo puxar o produto dentro do managed bean Ean (ProdutoEanController).
Na tela do ean, se eu puxo o produto, o mesmo aparece.
Espero ter explicado direito.
Agradeço a ajuda.