Problea com filtro em formulário e selectOneMenu

Olá, pessoal, tenho um problema simples, porém não estou achando a solução.
Bem, tenho uma tela que gostaria, que quando selecionasse um cliente, abaixo seus dados pudessem ser mostrados:
Este selectOneMenu obtém dados provenientes de uma lista
<h:selectOneMenu id="Cliente" onchange="submit()" label="Pessoa" immediate="true" value="#{atendimentoBean.clienteSelecionado}}" valueChangeListener="#{atendimentoBean.buscaPorNome}"> <f:selectItems value="#{atendimentoBean.clientes}"> </f:selectItems> <a4j:ajax event="change" render="dados" listener="#{atendimentoBean.buscaPorNome}" > </a4j:ajax> </h:selectOneMenu>
Este é o método que preenche o SelectOne Acima:

public List<SelectItem> getClientes() {
		if (this.clientes == null) {
			this.clientes = new ArrayList<SelectItem>();
			List<Cliente> clientes = new ClienteService().listarTodos();
			this.clientes.add(new SelectItem(null, "Selecione"));
			for (Cliente cliente : clientes) {
				this.clientes.add(new SelectItem(cliente, cliente.getNome()));
			}
		}
		return this.clientes;
	}

O meu objetivo é que quando selecione o cliente, seus respectivos dados pudessem ser também carregados na tela a partir de inputText’s:

[code]<h:panelGrid id=“dados” columns=“2”>
<h:outputText Value="#{clienteBean.clienteEdicao.nome}"></h:outputText>

			&lt;h:outputText value="Cidade" /&gt;
			&lt;h:inputText value="#{clienteBean.clienteEdicao.cidade}" /&gt;

			&lt;h:outputText value="Bairro" /&gt;
			&lt;h:inputText value="#{clienteEdicao.bairro}" /&gt;

			&lt;h:outputText value="Endereço" /&gt;
			&lt;h:inputText value="#{clienteBean.clienteEdicao.endereco}" /&gt;

			&lt;h:outputText value="Estado" /&gt;
			&lt;h:inputText value="#{clienteBean.clienteEdicao.estado}" /&gt;

			&lt;h:outputText value="Cpf" /&gt;
			&lt;h:inputText value="#{clienteBean.clienteEdicao.cpf}" /&gt;

		&lt;/h:panelGrid&gt;[/code]

Tentei deste modo, sem sucesso, sendo esta declaração no Mbean AtendimentoBean:

[code]public Cliente buscaPorNome(ValueChangeEvent event,Long id) {
System.out.println("Nome Selecionado : " + event.getNewValue());
Cliente cliente = new ClienteService().pesquisaPorId(id);

	return cliente;
}[/code]

Em uma classe Cliente Service Isso:

public Cliente pesquisaPorId(Long id) {
		DAOFactory daoFactory = DAOFactory.getDAOFactory();
		ClienteDAO clienteDAO = daoFactory.getClienteDAO();
		Cliente cliente = clienteDAO.pesquisarPorId(id);
		return cliente;
	}

Obs, isso chamando à partir de uma interface um DAO genérico contendo isso:

	public T pesquisarPorId(Serializable id) {
		return (T) this.session.get(this.persistentClass, id);
	}

Por favor, preciso muito desta solução, conto com a ajuda dos prezados que puderem me auxiliar.

Aqui mostra como fazer: JSF Exemplos Simples com Ajax.

No exemplo acima não utilizar banco de dados, aprenda o conceito que você conseguirá aplicar à sua necessidade.

Muito obrigado, Hebert, vou tentar implementar, qualquer dúvida vou postar.
Para fazer isso não vou usar nenhuma consulta à tabelas e/ou bancos?

[quote=smnj]Muito obrigado, Hebert, vou tentar implementar, qualquer dúvida vou postar.
Para fazer isso não vou usar nenhuma consulta à tabelas e/ou bancos?[/quote]Creio que sim. Afinal, quando a pessoa selecionar um valor você terá que buscar tudo em algum lugar.

Se não estiver na sessão do http vai ter que ir ao banco.

O Exemplo mostrará como ao selecionar um valor atualizar uma parte da página.

Tentei usar seu exemplo, mas meu erro está indo além do que imaginaria:
Estou tendo esse erro:
Erro de conversão ao definir o valor ‘6’ para ‘null Converter’. Erro de conversão ao definir o valor ‘6’ para ‘null Converter’.

É bem verdade que queria pegar esse bendito id, que é o que está reclamando aí, visto que no banco é o mesmo valor, mas o porém está que mesmo que eu declare um converter diretamente, ( não sei pq, mas só declará-lo no FacesConfig não acontece nada além do mesmo erro.

Bem, tentei assim na Página:

[code]<h:messages id=“myMessage” globalOnly=“false” showDetail=“true”></h:messages>
<h5>Digite seu nome</h5>


<h:panelGroup>
<h:selectOneMenu id=“inputname” label="${msgs.prompt}"
immediate=“true” value="#{clienteBean.clientes}">
<f:selectItems value="#{clienteBean.clientes}"
itemLabel="#{clienteBean.clientes}"
itemValue="#{clienteBean.clientes}" converter=“Converter” >
</f:selectItems>
<f:ajax render=“myName myMessage client” execute=“inputname”
event=“change”></f:ajax>
</h:selectOneMenu>
</h:panelGroup>

	&lt;h:panelGroup id="client"&gt;
		&lt;h:inputHidden value="#{clienteBean.clienteEdicao.id}"&gt;&lt;/h:inputHidden&gt;
		&lt;h:outputText id="myName" value="#{clienteBean.clienteEdicao.nome}"&gt;&lt;/h:outputText&gt;
		&lt;h:outputText value="#{clienteBean.clienteEdicao.id}"&gt;&lt;/h:outputText&gt;
	&lt;/h:panelGroup&gt;[/code]

Não sei se é significativo, mas este é meu converter:

package br.com.siscorimetry.conversores;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import javax.faces.convert.FacesConverter;

import br.com.siscolorimetry.dominio.Cliente;
import br.com.siscolorimetry.negocio.ClienteService;

@FacesConverter(value = "Converter")
public class ClienteConverter implements Converter {
	public Object getAsObject(FacesContext context, UIComponent component,
			String value) throws ConverterException {
		if (value == null) {
			return null;
		}
		return new ClienteService().pesquisaPorId(Long.parseLong(value));
	}

	public String getAsString(FacesContext context, UIComponent component,
			Object object) throws ConverterException {
		if (object == null) {
			return null;
		}
		Cliente cliente = (Cliente) object;
		return cliente.getId().toString();
	}

}

E não tive sucesso, o que sugere?

?

Tem como me dar uma mão nesse problema?
Ainda não consegui ter sucesso.