JSF ValueChangeEvent - Não traz os valores para O htmlInputText <<Cavera

0 respostas
B

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??

Criado 13 de novembro de 2010
Respostas 0
Participantes 1