[RESOLVIDO] - AutoComplete [primefaces] não "seta" valor para classe Controller, pq?

3 respostas
felipehts

Boa noite pessoal !!
Estou a dias, sim a dias, tentando resolver uma questão aqui, mas até o momento não consegui, vamos lá:

Tenho Uma Classe: Cliente que possui: ID e NOME, tenho uma classe ClienteController no qual tem um metodo “clienteSelecionado” para “setar” o Cliente (id + nome) e outro para “pegar” esses dados, o problema é que o componente “AutoComplete” do PrimeFaces não está setando o Cliente (id + nome), segue abaixo a estrutura do Autocomplete:

<p:autoComplete  completeMethod="#{clienteController.completaNome}" var="cliente" itemLabel="#{cliente.nome}"
             itemValue="#{cliente}" converter="clienteConverter" value="#{clienteController.clienteSelecionado}"/> // LISTA DE BOA OS CLIENTES, MAS O CAMPO "VALUE" NÃO ESTÁ FUNCIONANDO.....
  
            
            <p:commandButton value="Submit" update="cliente" />
  
  
  
            <h:outputText id="cliente" value="#{clienteController.clienteSelecionado.id}" /> // AQUI ESTÁ O GRANDE PROBLEMA, NÃO CONSIGO PEGAR O ID.....

Segue o metodo ClienteSelecionado:

public Cliente getClienteSelecionado() {
 setTeste("entrou no GET"); // coloquei esse set para testar se está acessando o método... AQUI ENTRA DE BOA, SEM PROBLEMAS
 return clienteSelecionado;

 }

 public void setClienteSelecionado(Cliente clienteSelecionado) {
  setTeste("entrou no SET"); // coloquei esse set para testar se está acessando o método... AQUI QUE DETECTEI O ERRO, NÃO ENTROU NO SET
 this.clienteSelecionado = clienteSelecionado;
 }

Alguém poderia me ajudar ??? vlw a todos

OBS: Pelo que percebi o compo “value” do componente “AutoComplete” não está funcionando para SETAR o CLIENTE, apenas para GET que funciona, pois pelo teste que fiz, não está passando pelo metodo “setClienteSelecionado”, sendo assim depois não consigo pegar o valor no “getClienteSelecionado”, já que nada foi setado…

3 Respostas

felipehts

Consegui resolver aqui pessoal, olhei o log do Glashfish, era problema na conversão de Cliente objeto para string…

W

amigo vc poderia postar o seu codigo como ele ficou funcionando ?, o get e o set ?

felipehts

Boa tarde, era problema na classe “ClienteConverter”, eu ajustei e funcionou, segue:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controller;

import Dao.ClienteDao;
import Model.Cliente;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;

/**
 *
 * @author felpehts
 */
@FacesConverter(value="clienteConverter")
public class ClienteConverter implements Converter {

 @Override
 public Object getAsObject(FacesContext fc, UIComponent uic, String string) {
 ClienteDao clienteDAO = new ClienteDao();
 Cliente cliente =  clienteDAO.buscaPorNome(string);
 
 

 return cliente;
 }

 @Override
 public String getAsString(FacesContext fc, UIComponent uic, Object o) {
 Cliente cliente = new Cliente();
 cliente = (Cliente) o;

 return cliente.getNome();
 }

}
Criado 4 de fevereiro de 2012
Ultima resposta 24 de set. de 2012
Respostas 3
Participantes 2