List com valor null[RESOLVIDO]

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 !

Você teria o Exception ??

Para poder olhar ?

[quote=aszarael]Você teria o Exception ??

Para poder olhar ?[/quote]

O problema é que nao tem Exception, o problema é o seguinte, chamo o metodo no controller ai ele vai na ProdutoJPADAO e la executa o metodo quando vai na linha do return ele retorna um arraylist com os dados que eu preciso(faz o select corretamente), mas quando volta pro controller e seta no arraylist de lá ele simplesmente vem nulo, na da erro no tomcat nem nada é muito estranho isso

Metodo do paginaController

Metodo no ProdutoJPADAO

Valores do arayList

Cara,

as imagens não abriram, vou tem mandar um exemplo do meu codigo.

Case de Dao

package com.br.dao;

import java.util.List;
import java.util.logging.Logger;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import com.br.model.Ano;

public class AnoDao {
	
	private Logger        logger = Logger.getLogger("br.com.log");  
	private StringBuilder vSQL   = new StringBuilder();
	
	/* Metodo de Cria&#65533;&#65533;o do Entity Manager */
	private EntityManager getEntityManager(){
		return ManagerEntityManager.getEntityManager();
	}
	
	/* Metodo de consulta no banco de dados */
	private List<Ano> consultar(List<String> pColunas, List<String> pValores){
		
		EntityManager entityManager = getEntityManager();
		vSQL.append("from Ano as ano");
		
		if (pColunas != null){
			vSQL.append(" WHERE ");
			
			for (int i = 0; i < pColunas.size(); i++){
				if (i==0){
					vSQL.append(" " + pColunas.get(i).toString() + " = '" + pValores.get(i).toString() + "'");
				}else{
					vSQL.append(" AND " + pColunas.get(i).toString() + " = '" + pValores.get(i).toString() + "'");
				}
			}
		}
		
		vSQL.append(" ORDER BY NUM_ANO DESC");
		logger.info("Consulta : " + vSQL);
		Query vQuery = entityManager.createQuery(vSQL.toString());		
		@SuppressWarnings("unchecked")
		List<Ano> listaAno = vQuery.getResultList();
		//entityManager.close();
		return listaAno;		
	}
	
	public List<Ano> select(List<String> pColunas, List<String> pValores){
		return consultar(pColunas,pValores);
	}
}

Utilização


List<Ano> listaAno = new ArrayList<Ano>();

listaAno = anoDao.select(null, null);

O erro, pode ser na instancia da variavel, onde você está retornando.

O problema é que quando retorna da JPADAO ele vem com valor.

paginaController
http://s23.postimg.org/dtrolyqzv/control.jpg

JPADAO
http://s13.postimg.org/9o9zejs4n/jpa_DAO.jpg

valores da ArrayList quando retorna para o pagina controller
http://s17.postimg.org/e92eq1gan/list_Prod.jpg

mas quando da o set nas listas ele simplesmente nao adiciona nada