Bom é o seguinte, tenho 3 metodos que são chamdos no init() da minha Bean, apenas um funciona e os outros 2 vem como null, já debuguei, na minha ProdutoJPADAO os dados estao corretos, mas quando seta nas Lists os dados ele fica null, eis as classes:
PaginasCOntroller
[code][
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import javax.faces.bean.ManagedBean;
import br.com.ofertacidade.model.dominio.Categoria;
import br.com.ofertacidade.model.dominio.Cliente;
import br.com.ofertacidade.model.dominio.Produto;
import br.com.ofertacidade.model.service.CategoriaService;
import br.com.ofertacidade.model.service.ProdutoService;
import br.com.ofertacidade.model.service.ServiceException;
import br.com.ofertacidade.model.util.SessionUtil;
import javax.annotation.PostConstruct;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.ViewScoped;
import org.apache.log4j.Logger;
import com.sun.faces.context.flash.ELFlash;
import javax.faces.bean.SessionScoped;
/**
-
@author Sheldon Merá
*/
@Controller
@ManagedBean
@ViewScoped
public class PaginasController {
String nomeProduto;
Logger logger;
private Produto produto;
private Cliente cliente;
private Categoria categoria;
private Categoria categoriaBusca;
private List produtos;
private Produto produtoEscolhido;
private List produtosPorCategoria;
private List produtosBuscados;
private List categorias;
private String nomeCategoria;
private String nomeContat;
private String telefoneContato;
private String mensagemContato;
private String emailContato;
private String produtoBuscado;
private String pagina;
private SessionUtil sessao;
private Long idProduto;
private List listaSuper;
private List listaDestaque;
@Autowired
private CategoriaService categoriaService;
@Autowired
private ProdutoService produtoService;
@PostConstruct
public void init() {
try {
atualizarListaCategorias();
destaques();
superDestaque();
logger = Logger.getLogger(ProdutoController.class);
} catch (ServiceException e) {
}
}
public PaginasController() {
novaPagina();
}
private void novaPagina() {
cliente = new Cliente();
produto = new Produto();
produtoEscolhido = new Produto();
listaSuper = new ArrayList<>();
listaDestaque = new ArrayList<>();
}
public void atualizarListaCategorias() throws ServiceException {
setCategorias(categoriaService.buscarTodos());
}
public void produtoPorCategoria() throws ServiceException {
setProdutosPorCategoria(produtoService.produtoPorCategoria(“Livros e Arte”));
}
private void destaques() throws ServiceException {
setListaDestaque(produtoService.buscarPrincipaisProdutos());
}
private void superDestaque() throws ServiceException {
setListaSuper(produtoService.buscarProdutosSuperDestaque());
}
public void produtoPorID() throws ServiceException {
produto = produtoService.buscarPorId(getIdProduto());
}
public void buscaProdutoPorNome() throws ServiceException {
setProdutosBuscados(produtoService.buscarPorNome(produtoBuscado));
}
public void clienteProdutoEscolhido() throws ServiceException {
cliente = produtoService.buscaClientePorProduto(produto.getId());
}
public void enviarMensagem() {
}
public void limparMensagem() {
}
public String redirect() {
return “teste”;
}
//setters & getters
[/code]
ProdutoJPADAO
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.ofertacidade.model.dao.implementacao;
import br.com.ofertacidade.model.dao.ProdutoDAO;
import br.com.ofertacidade.model.dao.exception.DAOException;
import br.com.ofertacidade.model.dominio.Cliente;
import br.com.ofertacidade.model.dominio.Produto;
import java.util.List;
import javax.persistence.TypedQuery;
import javax.transaction.Transactional;
import org.springframework.stereotype.Repository;
/**
*
* @author Sheldon Merá
*/
@Repository
@Transactional
public class ProdutoJPADAO extends GenericJPADAO<Produto, Long> implements ProdutoDAO {
public ProdutoJPADAO() {
super(Produto.class);
}
@Override
public List<Produto> buscarPorNome(String nome) throws DAOException {
TypedQuery<Produto> query = em.createNamedQuery("produto.produtoPorNome", Produto.class);
query.setParameter("descricao", "%" + nome + "%");
return query.getResultList();
}
@Override
public List<Produto> buscarProdutoPorCliente(Cliente fornecedor) throws DAOException {
TypedQuery<Produto> query = em.createNamedQuery("produto.produtoPorCliente", Produto.class);
query.setParameter("identificacaoCliente", fornecedor.getEmail());
return query.getResultList();
}
@Override
public List<Produto> produtoPorCategoria(String categoria) throws DAOException {
TypedQuery<Produto> query = em.createNamedQuery("produto.produtoPorCategoria", Produto.class);
query.setParameter("descricaoCategoria", categoria);
return query.getResultList();
}
@Override
public List<Produto> buscarPrincipaisProdutos() throws DAOException {
TypedQuery<Produto> query = em.createNamedQuery("produto.principaisProdutos", Produto.class);
return query.getResultList();
}
@Override
public Cliente buscaClientePorProduto(Long idProduto) {
TypedQuery<Cliente> query = em.createNamedQuery("produto.buscarClientePorProduto", Cliente.class);
query.setParameter("id", idProduto);
List listaDaBusca = query.getResultList();
Cliente encontrado = null;
if (!listaDaBusca.isEmpty()) {
return encontrado = (Cliente) listaDaBusca.get(0);
} else {
return null;
}
}
@Override
public List<Produto> buscarProdutosSuperDestaque() throws DAOException {
TypedQuery<Produto> query = em.createNamedQuery("produto.buscarProdutosSuperDestaque", Produto.class);
return query.getResultList();
}
}
Querries na classe Produto
@NamedQuery(name = "produto.principaisProdutos", query = "SELECT p FROM Produto p WHERE p.statusDestaque = true AND p.ativo = TRUE"),
@NamedQuery(name = "produto.buscarProdutosSuperDestaque", query = "SELECT p FROM Produto p WHERE p.statusSuperDestaque = true AND p.ativo = TRUE"),
E por fim a minha view, vo colocar apenas o bloco onde é chamado a uma das lists:
<div class="product_box">
<ui:repeat id="destProd" var="destaque" value="#{paginasController.listaDestaque}" >
<h:commandLink actionListener="#{paginasController.redirect()}" >
<h:graphicImage library="resources" name="images/produtos/#{destaque.imagem}" />
<f:param name="id" value="#{destaque.id}" />
</h:commandLink><h3>#{prodEspeciais.descricao}</h3>
<p class="product_price">R$ #{prodEspeciais.preco}</p>
<p class="add_to_cart">
<h:link outcome="teste.xhtml" >Detalhes
<f:param name="id" value="#{prodEspeciais.id}" />
</h:link>
</p>
</ui:repeat>
<div class="cleaner"></div>
</div>
o método atualizarListaCategorias() no meu Bean paginasController funciona perfeitamente, não sei o porque disso ou se é um bug, porque no log do Tomcat nao reporta nada isso é estranho. Obrigado a todos que tentarem !