Ola Pessoal
Estou encontrando dificuldades em popular os campos de meu form. Quando eu seleciono um Cep, ele deveria popular os campos municipio, endereco e bairro.
Alguém poderia me ajudar? Desde já agradeço.
Segue o código.
Cliente Bean.java
package br.com.bry.selecao.view.cliente;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ValueChangeEvent;
import br.com.bry.selecao.bean.Cliente;
import br.com.bry.selecao.bean.Empresa;
import br.com.bry.selecao.bean.Endereco;
import br.com.bry.selecao.business.ClienteBusiness;
import br.com.bry.selecao.business.EnderecoBusiness;
import br.com.bry.selecao.dto.DadosClienteDTO;
import br.com.bry.selecao.dto.EnderecoDTO;
import br.com.bry.selecao.util.TipoClienteEnum;
@ManagedBean
@ViewScoped
public class ClientesBean implements Serializable {
/**
*
*/
private static final long serialVersionUID = -1089573907825696218L;
private List<DadosClienteDTO> clientes = null;
private List<EnderecoDTO> enderecos = new ArrayList<EnderecoDTO>();
private boolean clienteSalvo;
private String value = "";
private String municipio = "";
private String cep;
private String bairro = " ";
private Endereco enderecoEdicao;
private Cliente clienteEdicao;
private Long clienteEmEdicao;
private int page = 1;
private boolean emEdicao;
private ClienteBusiness clienteBusiness;
private EnderecoBusiness enderecoBusiness;
@PostConstruct
public void init() {
clienteBusiness = new ClienteBusiness();
enderecoBusiness = new EnderecoBusiness();
novoCliente(TipoClienteEnum.PESSOA_FISICA);
emEdicao = false;
}
public List<DadosClienteDTO> autocomplete(String prefixo) {
setClientes(clienteBusiness.getClientes(prefixo));
return clientes;
}
public List<EnderecoDTO> autoCompleteCep(String prefixo) {
setEnderecos(enderecoBusiness.getEnderecos(prefixo));
return enderecos;
}
public void remove() {
clienteBusiness.removerCliente(clienteEmEdicao);
getClientes();
novoCliente(TipoClienteEnum.PESSOA_FISICA);
}
public void acaoSalvar() {
salvar();
}
public String acaoCadastroSucesso() {
novoCliente(TipoClienteEnum.PESSOA_FISICA);
return "/paginas/cliente/pesquisa";
}
public void salvar() {
clienteEdicao.setId(clienteEmEdicao);
setClienteSalvo(clienteBusiness.salvarCliente(clienteEdicao, municipio, enderecoEdicao));
getClientes();
clienteEmEdicao = null;
novoCliente(TipoClienteEnum.PESSOA_FISICA);
}
public String getTituloCadastraEdita() {
if (clienteEmEdicao == null) {
return "Cadastro de Cliente";
} else {
return "Edição de Cliente";
}
}
private void novoCliente(TipoClienteEnum tipoCliente) {
clienteEdicao = new Cliente();
clienteEdicao.setTipoCliente(tipoCliente);
enderecoEdicao = new Endereco();
clienteEdicao.setEmpresa(new Empresa());
clienteEmEdicao = null;
}
public void limparCliente(ValueChangeEvent event) {
novoCliente((TipoClienteEnum) event.getNewValue());
}
public List<DadosClienteDTO> getClientes() {
synchronized (this) {
clientes = new ArrayList<DadosClienteDTO>();
if (value != null && !"".equals(value)) {
clientes = clienteBusiness.getClientes(value);
}
}
return clientes;
}
public void setClientes(List<DadosClienteDTO> clientes) {
this.clientes = clientes;
}
public List<EnderecoDTO> getEnderecos() {
synchronized (this) {
enderecos = new ArrayList<EnderecoDTO>();
if(cep != null && !"".equals(cep)) {
enderecos = enderecoBusiness.getEnderecos(cep);
}
}
return enderecos;
}
public void setEnderecos(List<EnderecoDTO> enderecos) {
this.enderecos = enderecos;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getCep() {
return cep;
}
public void setCep(String cep) {
this.cep = cep;
}
public String getBairro() {
return bairro;
}
public void setBairro(String bairro) {
this.bairro = bairro;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public Cliente getClienteEdicao() {
return clienteEdicao;
}
public void setClienteEdicao(Cliente clienteEdicao) {
emEdicao = true;
Set<Endereco> enderecos = clienteEdicao.getEnderecos();
if (enderecos != null && !enderecos.isEmpty()) {
this.enderecoEdicao = enderecos.iterator().next();
this.municipio = enderecoEdicao.getMunicipio().getNome();
}
if (clienteEdicao.getEmpresa() == null) {
clienteEdicao.setEmpresa(new Empresa());
}
this.clienteEdicao = clienteEdicao;
}
public Long getClienteEmEdicao() {
return clienteEmEdicao;
}
public void setClienteEmEdicao(Long clienteEmEdicao) {
setClienteEdicao(clienteBusiness.getCliente(clienteEmEdicao));
this.clienteEmEdicao = clienteEmEdicao;
}
public String getMunicipio() {
return municipio;
}
public void setMunicipio(String municipio) {
this.municipio = municipio;
}
public boolean isEmEdicao() {
return emEdicao;
}
public void setEmEdicao(boolean emEdicao) {
this.emEdicao = emEdicao;
}
public Endereco getEnderecoEdicao() {
return enderecoEdicao;
}
public void setEnderecoEdicao(Endereco enderecoEdicao) {
emEdicao = true;
Set<Endereco> enderecos = enderecoEdicao.getEnderecos();
if (enderecos != null && !enderecos.isEmpty()) {
this.enderecoEdicao = enderecos.iterator().next();
this.municipio = enderecoEdicao.getMunicipio().getNome();
}
this.enderecoEdicao = enderecoEdicao;
}
public boolean isPessoaFisica() {
return TipoClienteEnum.PESSOA_FISICA == clienteEdicao.getTipoCliente();
}
public boolean isClienteSalvo() {
return clienteSalvo;
}
public void setClienteSalvo(boolean clienteSalvo) {
this.clienteSalvo = clienteSalvo;
}
}
endereco.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
<rich:jQuery id="mskCEP" selector="#cep" timing="domready"
query="mask('99999-999',{placeholder:' '})" />
<a4j:region>
<h:panelGrid columns="3"
columnClasses="colunaLabels,colunaCampos,colunaErros"
id="enderecoGrid">
<h:outputText value="#{msgs['cliente.label.cep']}" />
<rich:autocomplete mode="cachedAjax" tokens=", " minChars="2" autofill="false"
value="#{clientesBean.enderecoEdicao.cep}" autocompleteMethod="#{clientesBean.autoCompleteCep}"
var="cliente" fetchValue="#{cliente.cep}"
conveter="enderecoConverter">
<rich:column>
<b><h:outputText value="#{cliente.cep}" /></b>
</rich:column>
</rich:autocomplete>
<rich:message id="cepMsg" for="cep" />
<h:outputText value="#{msgs['cliente.label.municipio']}" />
<h:inputText value="#{clientesBean.municipio}" size="40"
id="municipio" required="true" requiredMessage="#{msgs['cliente.mensagem.requerido.municipio']}">
</h:inputText>
<rich:message id="municipioMsg" for="municipio" />
<h:outputText value="#{msgs['cliente.label.bairro']}" />
<h:inputText value="#{clientesBean.enderecoEdicao.bairro}" size="40"
id="bairro" required="true" requiredMessage="#{msgs['cliente.mensagem.requerido.bairro']}">
</h:inputText>
<rich:message id="bairroMsg" for="bairro" />
<h:outputText value="#{msgs['cliente.label.endereco']}" />
<h:inputText value="#{clientesBean.enderecoEdicao.endereco}" size="40"
id="endereco" required="true" requiredMessage="#{msgs['cliente.mensagem.requerido.endereco']}">
</h:inputText>
<rich:message id="enderecoMsg" for="endereco" />
<h:outputText value="#{msgs['cliente.label.numero']}" />
<h:inputText value="#{clientesBean.enderecoEdicao.numero}" size="40"
id="numero" required="true" requiredMessage="#{msgs['cliente.mensagem.requerido.numero']}">
</h:inputText>
<rich:message id="numeroMsg" for="numero" />
<h:outputText value="#{msgs['cliente.label.complemento']}" />
<h:inputText value="#{clientesBean.enderecoEdicao.complemento}"
size="40" id="complemento">
</h:inputText>
<h:panelGroup />
<h:outputText value="#{msgs['cliente.label.referencia']}" />
<h:inputText value="#{clientesBean.enderecoEdicao.pontoReferencia}"
size="40" id="referencia">
</h:inputText>
<h:panelGroup />
</h:panelGrid>
</a4j:region>
</html>