[RESOLVIDO] Dúvida como fazer Pesquisa

5 respostas
cherador

Bom dia galera estou com uma duvida aqui como fazer pesquisa passando um parâmetro, sei que eh coisa simples mas está dando uns erros estranhos.
O que quero fazer é pesquisar uma data e mostrar na tabela abaixo os dados da pesquisa.

minha jsp

<h:outputText value="Data do Serviço ( D ): "/>
                        <rich:calendar id="dataServico" value="#{veiculoController.serv.dataAtual}" datePattern="dd/MM/yyyy"
                                       required="true"
                                       requiredMessage="Por Favor Entre com da Data do Serviço"/>
                        <rich:message for="dataServico" styleClass="msg"/>
                        <br><br><br>


                        <a4j:commandButton value="Pesquisar Ficha" action="#{veiculoController.pesquisar}" reRender="tbPesquisa"/>

minha controller

public void pesquisar(Date data) { // aqui estou passando o parâmetro q vem da minha jsp
        data = serv.getDataAtual();
        System.out.println("data pesquisada " + data);
        getTodosVeiculosPesquisa();
    }


public DataModel getTodosVeiculosPesquisa() {

        if (serv.getDataAtual() == null) {
            System.out.println("data vazia null ");
            model = new ListDataModel();
            return model;
        }
        if (serv.getDataAtual() != null) {
            System.out.println("diferente de null");
            Date data = serv.getDataAtual();

            model = new ListDataModel(idao.todosCarrosPesquisados());
            return model;
        }
        return model;
    }

minha DAO

public List todosCarrosPesquisados() {
        System.out.println("todosCarrosPesquisados");
        EntityManager em = getEntityManager();
        try {

            Query q = em.createQuery("SELECT v FROM Veiculo v, Servico s where v.idServico = s.id and s.dataAtual = :dataAtual");
            System.out.println("q "+q.getResultList());
            return q.getResultList();

        } finally {
            em.close();
        }
    }

quando faço a pesquisa ele me retorna um erro de “Method not found: [email removido]()”, ou seja método nao encontrado.

quando eu retiro aquele parametro ele da outro erro de "Query argument dataAtual not found in the list of parameters provided during query execution. " nao acha o parametro dataAtual.

alguem pode ajuda?

5 Respostas

finotti

Você não precisa passar o parâmetro para o método pesquisar()
Mande o stack trace do erro que está sendo gerado

Lucas_Sorrentino

Cara, primeiro que o pesquisar não é uma action… vc ta chamando um método void no jsp, e action obrigatoriamente retorna uma String, por isso que ele não ta encontrando. Ficaria algo tipo assim:

public String pesquisar(Date data) { // aqui estou passando o parâmetro q vem da minha jsp  
        data = serv.getDataAtual();  
        System.out.println("data pesquisada " + data);  
        getTodosVeiculosPesquisa();  
        return null;
    }

outra coisa, você tem que dizer pro seu método no DAO qual é o parametro… ficaria algo tipo assim:

public List todosCarrosPesquisados(Date data) {  
         System.out.println("todosCarrosPesquisados");  
         EntityManager em = getEntityManager();  
         try {  
  
             Query q = em.createQuery("SELECT v FROM Veiculo v, Servico s where v.idServico = s.id and s.dataAtual = :dataAtual");  
             q.setParameter("dataAtual", data);
             System.out.println("q "+q.getResultList());  
             return q.getResultList();  
   
         } finally {  
             em.close();  
         }

Entre algumas outras coisas… vc não especificou que tipo de lista será retornada no seu método DAO. Este também não está recebendo o parâmetro(no meu exemplo, mostrei ele recebendo o parâmetro)…

Da uma pesquisada…

Espero ter ajudado.

Abraços

EHS

Eu tive um problema parecido esses tempo e o problema era no faces-config, pois parece que a classe veiculoController naum possui o metodo pesquisar, talvez o problema esteja no faces-config.xhtml.

cherador

aew vlw a ajuda de vcs consegui resolver aqui.

ficou assim

na minha DAO

public List todosCarrosPesquisados(String dataAtual) {
        System.out.println("todosCarrosPesquisados");
        EntityManager em = getEntityManager();
        try {

            Query q = em.createQuery("SELECT v FROM Veiculo v, Servico s where v.idServico = s.id and s.dataAtual = '"+dataAtual+"' ");
            System.out.println("q "+q.getResultList());
            return q.getResultList();

        } finally {
            em.close();
        }
    }

minha controller

public String pesquisar() {

       Date data = serv.getDataAtual();
        System.out.println("data pesquisada "+data);
        getTodosVeiculosPesquisa();
        return "OK";
    }

    public DataModel getTodosVeiculosPesquisa() {
        if (serv.getDataAtual() == null) {
            System.out.println("data vazia null ");
            model = new ListDataModel();
            return model;
        }
        if (serv.getDataAtual() != null) {
            System.out.println("diferente de null");
            DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            Date data = serv.getDataAtual();
            dateFormat.format(data);
            model = new ListDataModel(idao.todosCarrosPesquisados(dateFormat.format(data)));
            return model;
        }
        return model;
    }
Lucas_Sorrentino

Blz!
Só coloca [RESOLVIDO] no título do post.

Abraços!

Criado 3 de fevereiro de 2011
Ultima resposta 3 de fev. de 2011
Respostas 5
Participantes 4