List coming with null value

2

Well, it's the following, I have 3 methods that are called in init() of my Bean, only one works and the other 2 comes as null , already debuguei and in my ProductJPADAO the data is correct, but when you drop the data in the Lists, it gets null .

Here are the classes:

COntroller Pages

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<Produto> produtos;
private Produto produtoEscolhido;

private List<Produto> produtosPorCategoria;
private List<Produto> produtosBuscados;
private List<Categoria> 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<Produto> listaSuper;

private List<Produto> 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

ProductoJPADAO

/*
 * 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();
}

}

Queries in the Product class

@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"),

And finally my view, I'll just put the block where it is called to one of the 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>

The atualizarListaCategorias() method in my Bean paginasController works perfectly, I do not know why or if it is a bug, because in the Tomcat log it does not report anything, this is strange.

Thank you all for trying!

EDIT

Product Class

    /*
     * 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.dominio;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;

/**
  *
 * @author Sheldon Merá
 */
@Entity
@NamedQueries({
@NamedQuery(name = "produto.produtoPorNome", query = "SELECT p FROM Produto p WHERE p.descricao LIKE :descricao AND p.ativo = true"),
@NamedQuery(name = "produto.produtoPorCategoria", query = "SELECT p FROM Produto p, Categoria c WHERE p.categoria.id  = c.id AND p.ativo = TRUE AND c.descricao = :descricaoCategoria"),
@NamedQuery(name = "produto.buscarClientePorProduto", query = "SELECT c FROM Cliente c, Produto p WHERE p.cliente.id  = :id"),
@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"),
@NamedQuery(name = "produto.produtoPorCliente", query = "SELECT p FROM Produto p  WHERE p.cliente.email = :identificacaoCliente"),})

public class Produto implements Serializable, Modelo<Long> {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
@Column(nullable = false)
private String descricao;

private Boolean statusDestaque;

private Boolean statusSuperDestaque;

@JoinColumn
@ManyToOne
private Cliente cliente;

@JoinColumn
@ManyToOne
private SubCategoria subCategoria;

@JoinColumn
@ManyToOne
private Categoria categoria;

private String imagem;

private Float preco;

private Boolean ativo;

@Override
public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

/**
 * @return the descricao
 */
public String getDescricao() {
    return descricao;
}

/**
 * @param descricao the descricao to set
 */
public void setDescricao(String descricao) {
    this.descricao = descricao;
}

/**
 * @return the statusDestaque
 */
public Boolean getStatusDestaque() {
    return statusDestaque;
}

/**
 * @param statusDestaque the statusDestaque to set
 */
public void setStatusDestaque(Boolean statusDestaque) {
    this.statusDestaque = statusDestaque;
}

/**
 * @return the cliente
 */
public Cliente getCliente() {
    return cliente;
}

/**
 * @param cliente the cliente to set
 */
public void setCliente(Cliente cliente) {
    this.cliente = cliente;
}

/**
 * @return the preco
 */
public Float getPreco() {
    return preco;
}

/**
 * @param preco the preco to set
 */
public void setPreco(Float preco) {
    this.preco = preco;
}

/**
 * @param imagem the imagem to set
 */
public void setImagem(String imagem) {
    this.imagem = imagem;
}

public String getImagem() {
    return imagem;
}

/**
 * @return the subCategoria
 */
public SubCategoria getSubCategoria() {
    return subCategoria;
}

/**
 * @param subCategoria the subCategoria to set
 */
public void setSubCategoria(SubCategoria subCategoria) {
    this.subCategoria = subCategoria;
}

/**
 * @return the categoria
 */
public Categoria getCategoria() {
    return categoria;
}

/**
 * @param categoria the categoria to set
 */
public void setCategoria(Categoria categoria) {
    this.categoria = categoria;
}

/**
 * @return the statusSuperDestaque
 */
public Boolean getStatusSuperDestaque() {
    return statusSuperDestaque;
}

/**
 * @param statusSuperDestaque the statusSuperDestaque to set
 */
public void setStatusSuperDestaque(Boolean statusSuperDestaque) {
    this.statusSuperDestaque = statusSuperDestaque;
}

/**
 * @return the ativo
 */
public Boolean getAtivo() {
    return ativo;
}

/**
 * @param ativo the ativo to set
 */
public void setAtivo(Boolean ativo) {
    this.ativo = ativo;
}

}

EDIT2 Images of the Methods PageIntroleer

MethodinProductJPADAO

JPADAO ArrayList Data

    
asked by anonymous 24.04.2015 / 04:31

1 answer

1

Your error is in your service.

  • ProductService

    public List<Produto> buscarPrincipaisProdutos(){
        //ligar serviço ao repositório
        return null; //ajuste isso
    }
    

Well, if your ProductJPADAO has the objects then the service is not bridging the controller

    
27.09.2016 / 02:13