Boa Tarde Pessoal, estou tentando fazer um formulário autopreencher quando for digitado o cep no mesmo:
Ex: Digito 21840-040
Preenche:
Logradouro: Rua Evaristo Pires
Bairro: Bangu
Cidade: Rio de Janeiro
Estado: RJ
minha jsf
<%--
Document : cadastroUsuario
Created on : 28/08/2010, 13:33:05
Author : Álan Azevedo
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@taglib uri="http://richfaces.org/rich" prefix="rich" %>
<%@taglib uri="http://richfaces.org/a4j" prefix="a4j" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="StyleSheet" type="text/css" href="css/estilos.css" media="screen" >
<title>Cadastro de Usuário</title>
</head>
<style>
body{background-color: #999;}
</style>
<script type="text/javascript">
function FormataCpf(campo, teclapres)
{
var tecla = teclapres.keyCode;
var vr = new String(campo.value);
vr = vr.replace(".", "");
vr = vr.replace("/", "");
vr = vr.replace("-", "");
tam = vr.length + 1;
if (tecla != 14)
{
if (tam == 4)
campo.value = vr.substr(0, 3) + '.';
if (tam == 7)
campo.value = vr.substr(0, 3) + '.' + vr.substr(3, 6) + '.';
if (tam == 11)
campo.value = vr.substr(0, 3) + '.' + vr.substr(3, 3) + '.' + vr.substr(7, 3) + '-' + vr.substr(11, 2);
}
}
</script>
<script type="text/javascript">
function FormataCep(campo, teclapres)
{
var tecla = teclapres.keyCode;
var vr = new String(campo.value);
vr = vr.replace("-", "");
tam = vr.length + 1;
if (tecla != 9)
{
if (tam == 6)
campo.value = vr.substr(0, 5) + '-';
}
}
</script>
<script type="text/javascript">
function FormataTel(campo, teclapres)
{
var tecla = teclapres.keyCode;
var vr = new String(campo.value);
vr = vr.replace("(", "");
vr = vr.replace(")", "");
vr = vr.replace("-", "");
tam = vr.length + 1;
if (tecla != 10)
{
if (tam == 0)
campo.value = vr.substr(0, 0) + '(';
if (tam == 3)
campo.value = vr.substr(0, 0) + '(' + vr.substr(0, 2) + ') ';
if (tam == 8)
campo.value = vr.substr(0, 0) + '(' + vr.substr(0, 2) + ') ' + vr.substr(3, 4) + '-' + vr.substr(8, 4);
}
}
</script>
<f:view>
<rich:panel>
<f:facet name="header">
<h:outputText value="Cadastro de usuário"/>
</f:facet>
<h:outputText value="Formulário para cadastro de usuário"/>
<a4j:form id="formcadastrousuario">
<rich:tabPanel switchType="client" width="600">
<rich:tab label="Dados do usuário:">
<h:panelGrid columns="2" style="font-size: 9pt;">
<h:outputLabel value="Nome:" for="nome"/>
<h:inputText id="nome" value="#{cadastroUsuario.usuario.nome}"/>
<h:outputLabel value="CPF:" for="cpf"/>
<h:inputText id="cpf" maxlength="14" value="#{cadastroUsuario.usuario.cpf}" onkeyup="FormataCpf(this,event)"/>
<h:outputLabel value="Data de Nascimento:" for="datanascimento"/>
<rich:calendar id="datanascimento" datePattern="dd/MM/yyyy"
value="#{cadastroUsuario.usuario.datanascimento}"/>
</h:panelGrid>
<br/>
<rich:separator height="1"/>
<br/>
<h:panelGrid columns="1" style="font-size: 9pt;">
<h:graphicImage url="kaptcha.jpg" width="200" />
<br/>
<h:outputLabel value="Digite a imagem acima:" for="imagem" />
<h:inputText id="imagem" value="#{cadastroUsuario.imagem}" size="16" />
</h:panelGrid>
</rich:tab>
<rich:tab label="Dados do endereço:">
<a4j:region>
<h:panelGrid columns="3" style="font-size: 9pt;">
<h:outputLabel value="CEP:" for="cep"/>
<h:inputText id="inputCep" size="6" maxlength="9" value="#{cadastroUsuario.usuario.cep}" binding="#{cadastroUsuario.inputCep}" valueChangeListener="#{cadastroUsuario.consultarCep}" onchange="this.form.submit()" onkeyup="FormataCep(this,event)" immediate="true"/>
</h:panelGrid>
<rich:message for="inputCep" styleClass="msgErro" />
<br/>
<rich:separator height="1"/>
<br/>
<h:panelGrid columns="4" style="font-size: 9pt;">
<h:outputLabel value="Logradouro:" for="logradouro"/>
<h:inputText id="inputLogradouro" binding="#{cadastroUsuario.inputLogradouro}" value="#{cadastroUsuario.usuario.logradouro}" />
<h:outputLabel value="Numero:" for="numero"/>
<rich:inputNumberSpinner id="numero" minValue="1" maxValue="50000" value="#{cadastroUsuario.usuario.numero}" />
<h:outputLabel value="Bairro:" for="bairro"/>
<h:inputText id="inputBairro" binding="#{cadastroUsuario.inputBairro}" value="#{cadastroUsuario.usuario.bairro}" />
<h:outputLabel value="Cidade:" for="cidade"/>
<h:inputText id="inputCidade" binding="#{cadastroUsuario.inputCidade}" value="#{cadastroUsuario.usuario.cidade}" />
<h:outputLabel value="Estado:" for="estado"/>
<h:inputText id="inputUf" maxlength="2" binding="#{cadastroUsuario.inputUf}" value="#{cadastroUsuario.usuario.estado}"/>
</h:panelGrid>
<br/>
<rich:separator height="1"/>
<br/>
<h:panelGrid>
<h:outputLabel value="Telefone:" for="telefone"/>
<h:inputText id="telefone" size="14" maxlength="14" value="#{cadastroUsuario.usuario.telefone}" onkeyup="FormataTel(this,event)" />
<h:outputLabel value="Celular:" for="celular"/>
<h:inputText id="celular" size="14" maxlength="14" value="#{cadastroUsuario.usuario.celular}" onkeyup="FormataTel(this,event)" />
</h:panelGrid>
</a4j:region>
</rich:tab>
<rich:tab label="Dados da conta:">
<h:panelGrid columns="2" style="font-size: 9pt;">
<h:outputLabel value="Email:" for="email"/>
<h:inputText id="email" value="#{cadastroUsuario.usuario.email}"/>
<h:outputLabel value="Nivel de permição:" for="permicao"/>
<h:selectOneMenu id="permicao">
<f:selectItem itemValue="3" itemLabel="Operador" />
<f:selectItem itemValue="2" itemLabel="Administrador" />
<f:selectItem itemValue="1" itemLabel="Total" />
</h:selectOneMenu>
<h:outputLabel value="Senha:" for="senha"/>
<h:inputSecret id="senha" value="#{cadastroUsuario.usuario.senha}"/>
<h:outputLabel value="Confirme a senha:" for="senha2"/>
<h:inputSecret id="senha2" value="#{cadastroUsuario.senha2}"/>
</h:panelGrid>
</rich:tab>
</rich:tabPanel>
<br/>
<a4j:commandButton value="Cadastrar Usuário" action="#{cadastroUsuario.cadastrar}" reRender="formcadastrousuario"/>
<a4j:commandButton value="Cancelar" id="cancelar" >
<rich:componentControl attachTo="cancelar" for="formcadastrousuario" event="onclick" operation="hide" />
</a4j:commandButton>
<br/><br/>
<h:messages styleClass="msgErro"/>
</a4j:form>
</rich:panel>
</f:view>
</body>
</html>
meu backbean:
package br.com.projeto.control;
import br.com.projeto.model.Usuario;
import br.com.projeto.persistence.UsuarioDao;
import br.com.projeto.webServiceCep.WebServiceCep;
import javax.faces.application.FacesMessage;
import javax.faces.component.html.HtmlInputText;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
public class ManterCadastroUsuario {
private Usuario usuario;
private String imagem;
private String senha2;
private HtmlInputText inputCep, inputLogradouro, inputBairro, inputCidade, inputUf;
public ManterCadastroUsuario() {
usuario = new Usuario();
}
public void autoCompletar(ValueChangeEvent vce) {
String cep = vce.getNewValue().toString();
StringBuilder logradouro = new StringBuilder();
StringBuilder bairro = new StringBuilder();
StringBuilder cidade = new StringBuilder();
StringBuilder uf = new StringBuilder();
consultarCep(cep, logradouro, bairro, cidade, uf);
inputLogradouro.setValue(logradouro.toString());
inputBairro.setValue(bairro.toString());
inputCidade.setValue(cidade.toString());
inputUf.setValue(uf.toString());
}
public void consultarCep(String cep, StringBuilder logradouro, StringBuilder bairro, StringBuilder cidade, StringBuilder uf){
String mensagemCep = null;
if (usuario.getCep().length() < 9){
mensagemCep = "Informe o CEP completo.";
} else{
WebServiceCep webServiceCep = WebServiceCep.searchCep(usuario.getCep());
if (webServiceCep.wasSuccessful()) {
logradouro.append(webServiceCep.getLogradouroFull());
bairro.append(webServiceCep.getBairro());
cidade.append(webServiceCep.getCidade());
uf.append(webServiceCep.getUf());
FacesContext.getCurrentInstance().renderResponse();
} else {
mensagemCep = "O CEP digitado não foi encontrado.";
}
}
FacesContext.getCurrentInstance().addMessage("inputcep", new FacesMessage(mensagemCep));
}
public void cadastrar() {
String mensagem = null;
try {
String captcha = (String) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
boolean dadosValidos = true;
if (usuario.getNome().length() < 3) {
mensagem = "Digite um nome valido!";
dadosValidos = false;
} else if (usuario.getCpf().length() < 14) {
mensagem = "Digite um CPF valido!";
dadosValidos = false;
} else if (usuario.getDatanascimento() == null) {
mensagem = "Informe a data de nascimento!";
dadosValidos = false;
} else if (usuario.getCep().length() < 9) {
mensagem = "Informe o seu CEP!";
dadosValidos = false;
} else if (usuario.getLogradouro().length() < 10) {
mensagem = "Digite um endereço valido!";
dadosValidos = false;
} else if (usuario.getBairro().length() < 3) {
mensagem = "Digite um bairro valido!";
dadosValidos = false;
} else if (usuario.getEstado() == null) {
mensagem = "Digite um estado valido!";
dadosValidos = false;
} else if (usuario.getNumero() == null) {
mensagem = "Informe o numero da residencia!";
dadosValidos = false;
} else if (usuario.getCidade().length() < 5) {
mensagem = "Digite uma cidade valida!";
dadosValidos = false;
} else if (usuario.getEmail().length() < 8) {
mensagem = "Digite um email valido!";
dadosValidos = false;
} else if (usuario.getSenha() == null) {
mensagem = "Informe uma senha!";
dadosValidos = false;
} else if (usuario.getSenha().length() < 6) {
mensagem = "Informe uma senha com pelo menos 6 digitos!";
dadosValidos = false;
} /*else if (new UsuarioDao().cpfExistente(usuario.getCpf())){
mensagem = "Erro. O CPF digitado já está cadastrado.";
dadosValidos = false;
}*/
if (dadosValidos) {
if (captcha != null && imagem != null) {
if (imagem.equals(captcha)) {
if (usuario.getSenha().equals(senha2)) {
new UsuarioDao().salvar(usuario);
usuario = new Usuario();
mensagem = "Usuário cadastrado com sucesso!";
} else {
mensagem = "As senhas não coincidem! Digite novamente.";
}
} else {
mensagem = "Erro, digite a imagem corretamente!";
}
}
}
} catch (Exception e) {
mensagem = e.getMessage();
}
FacesContext.getCurrentInstance().addMessage("formcadastrousuario", new FacesMessage(mensagem));
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public String getImagem() {
return imagem;
}
public void setImagem(String imagem) {
this.imagem = imagem;
}
public String getSenha2() {
return senha2;
}
public void setSenha2(String senha2) {
this.senha2 = senha2;
}
public HtmlInputText getInputBairro() {
return inputBairro;
}
public void setInputBairro(HtmlInputText inputBairro) {
this.inputBairro = inputBairro;
}
public HtmlInputText getInputCep() {
return inputCep;
}
public void setInputCep(HtmlInputText inputCep) {
this.inputCep = inputCep;
}
public HtmlInputText getInputCidade() {
return inputCidade;
}
public void setInputCidade(HtmlInputText inputCidade) {
this.inputCidade = inputCidade;
}
public HtmlInputText getInputLogradouro() {
return inputLogradouro;
}
public void setInputLogradouro(HtmlInputText inputLogradouro) {
this.inputLogradouro = inputLogradouro;
}
public HtmlInputText getInputUf() {
return inputUf;
}
public void setInputUf(HtmlInputText inputUf) {
this.inputUf = inputUf;
}
}
Porem o mesmo renderiza mas não preenche,
não traz os valores nos campos... Pq??