Exibir nome a partir do código (JSF) [RESOLVIDO]

13 respostas
Bianca_Java

Oi pessoal,tenho numa pagina dois inputtext,um que tem o código do cliente e outro que recebe o nome do cliente a partir do código que esta no outro input.O problema é que quando digito o código para exibir o nome,as vezes o nome aparece e as vezes não, outras vezes acusa que o cliente não existe,abaixo o código:

dao

public String nomecliente(Integer codigo){
        Conexao conexao=new Conexao();
        String retorno="falha";
        Orcamentos orcamentos=new Orcamentos();
        try{
            Statement St=(Statement)conexao.getConn().createStatement();
            ResultSet Rs=St.executeQuery("select * from clientes where codigo like "+codigo);
            if(Rs.next()){
                orcamentos.setCliente(Rs.getInt("codigo"));
                orcamentos.setNome_cliente(Rs.getString("nome"));
                retorno="sucesso";
            }
        }
        catch(Exception Erro){
            Erro.printStackTrace();
        }
        return retorno;
    }

Bean

public void nomecliente(ValueChangeEvent event){
        OrcamentosDAO orcamentosdao=new OrcamentosDAO();
        FacesContext msg=FacesContext.getCurrentInstance();
       String retorno=orcamentosdao.nomecliente(orcamento.getCliente());
       event.getNewValue();
        if (retorno.equals("sucesso")){
           msg.addMessage(null,new FacesMessage(FacesMessage.SEVERITY_INFO,"Cliente encontrado"+orcamento.getNome_cliente(),null)); 
        }
        else{
            msg.addMessage(null,new FacesMessage(FacesMessage.SEVERITY_ERROR,"Cliente não existe",null));
        }
    }

e aqui o html da pagina(Estou usando primefaces)

<p:inputText valueChangeListener="#{orcamentosBean.nomecliente}" value="#{orcamentosBean.orcamento.cliente}"  style="width: 12em;"><p:ajax event="blur" process="@this" update="aviso"/></p:inputText>

13 Respostas

R

Ja pegou esse código e testou na consulta,pra ver se o cliente realmente existe?

Bianca_Java

Ja fiz isso sim,o cliente existe no banco.As vezes a consulta funciona,outras vezes não,ela só funciona depois que eu digito várias vezes os códigos para fazer as checagens.

Bianca_Java

aff…ninguem pode dar uma ajudinha? :frowning:

T

Bianca,

Esse campo codigo no seu banco de dados é um campo inteiro ou string ?

Bianca_Java

O código é inteiro, quero pesquisar valores e inteiros e retornar o nome que é em string

T

Tente trocar seu select

de
select * from clientes where codigo like "+codigo)

para
select * from clientes where codigo = "+codigo)

o Like funciona melhor pesquisando string.

Bianca_Java

Ja fiz isso, também não adiantou, é como se ele não “atualizasse” o select, muito estranho.

Luciano_Lopes

Vou acompanhar o tópico,também estou passando pelo mesmo problema.

F

Seguinte,

Você está capturando o novo valor do cliente, mas não está realizando nenhuma ação com ele.

Tente adicionar essa linha ao final do seu listener:

msg.renderResponse();
Bianca_Java

fshima:
Seguinte,

Você está capturando o novo valor do cliente, mas não está realizando nenhuma ação com ele.

Tente adicionar essa linha ao final do seu listener:

msg.renderResponse();


Não funcionou :frowning:

F

Seguinte,

Já tentou manipular o ciclo de vida do JSF?

Tente colocar no final do seu método chamado no listener o seguinte:

PhaseId phaseId = event.getPhaseId();

if (phaseId.equals(PhaseId.ANY_PHASE)){

      event.setPhaseId(PhaseId.UPDATE_MODEL_VALUES);
      event.queue();
}

Faça essa alteração e verifique se o erro ainda persiste.

AdemirPinto

fshima,

qual a vantagem e como funciona este negocio de manipular o ciclo de vida do JSF? Sei que isso é muito interessante, mas não consegui entender a sua utilidade.

Obrigado

Ademir

E

“RESOLVIDO”??? qual a solução??? poste ai pra todos, o assunto é interessante!

Obrigado!

Criado 3 de julho de 2011
Ultima resposta 6 de jul. de 2011
Respostas 13
Participantes 7