Sempre Java

agosto 1, 2010

Desenvolvimento de Aplicações WEB para diversos segmentos

Filed under: Desenvolvimento Web — Tags:, , , , — semprejava @ 9:29 pm

Olá pessoal, boa tarde.
Aproveitando para divulgar que desenvolvo aplicações Web para diversos segmentos. Protótipo disponível em: http://lessandronp.homeip.net:8080/AutoPecas
Sistema totalmente desenvolvido utilizando o framework JavaServer Faces + Primefaces 2.1 + Hibernate + EJB + MySQL.
Abraços,
Att,
Lessandro

JSF 2.0 – Validação Client-Side com JQuery + JavaScript + PrimeFaces 2.1

Filed under: Desenvolvimento Web — Tags:, , , , — semprejava @ 8:46 pm

Ola pessoal, boa tarde.
Estarei disponibilizando aqui uma forma de realizar validações client-side utilizando jquery com javascript manipulando o componente “h:message” que por padrão renderiza mensagens para validações server-side e campos requeridos de forma client-side no JSF.

Tendo as funções abaixo para remoção de máscara e validação do CPF vamos lá:

//Remove caracteres
function remove(str, sub) {
    i = str.indexOf(sub);
    r = "";
    if (i == -1) return str;
    r += str.substring(0,i) + remove(str.substring(i + sub.length), sub);
    return r;
}

function removeMascara(object){
    valor = recuperaValor(object);
    semMascara = remove(valor, ".")
    semMascara = remove(semMascara, "-")
    semMascara = remove(semMascara, "/")
    semMascara = remove(semMascara, "(")
    semMascara = remove(semMascara, ")")
    document.getElementById(object).value = semMascara;
    return semMascara;
}

function validaCpf(cpf) {
    var numeros, digitos, soma, i, resultado, digitos_iguais;
    digitos_iguais = 1;
    if (cpf.length < 11) {
        return false;
    }
    for (i = 0; i < cpf.length - 1; i++)
        if (cpf.charAt(i) != cpf.charAt(i + 1)) {
            digitos_iguais = 0;
            break;
        }
    if (!digitos_iguais) {
        numeros = cpf.substring(0,9);
        digitos = cpf.substring(9);
        soma = 0;
        for (i = 10; i > 1; i--)
            soma += numeros.charAt(10 - i) * i;
        resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
        if (resultado != digitos.charAt(0))
            return false;
        numeros = cpf.substring(0,10);
        soma = 0;
        for (i = 11; i > 1; i--)
            soma += numeros.charAt(11 - i) * i;
        resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
        if (resultado != digitos.charAt(1))
            return false;
        return true;
    }
    else
        return false;
}

Declaramos a função para validar o form com a jquery para manipulação do componente h:message do CPF.

<script type="text/javascript">

	function validaForm() {
		validacao = true;
		// Cliente Pessoa Fisica
		cpfSemMascara = removeMascara('iptCpf');
		if (!validaCpf(cpfSemMascara)) {
			// Colocando a mensagem no h:message com id="msgCpf"
			jQuery('#msgCpf').css({'color' : 'red', 'font-size' : '11px', 'font-weight' : 'bold', 'font-style' : 'italic'});
			jQuery('#msgCpf').text('CPF inválido. Tente novamente.');
			validacao = false;
		}
		return validacao;
	}
</script>

Agora aqui temos a caixa de texto responsável por receber o valor com máscara e o h:message por verificar as mensagens da mesma. Reparem que o ID é indispensável neste caso para ser manipulado posteriormente.

<h:outputLabel value="*" styleClass="fonteAlerta">
	<h:outputLabel id="oplCpf" value="CPF:" />
</h:outputLabel>
<p:inputMask id="iptCpf" mask="999.999.999-99" value="#{managedBean.usuario.nuCpf}"
	required="true" maxlength="14" size="15" requiredMessage="Informe o CPF." />
<h:message id="msgCpf" styleClass="fonteAlerta" for="iptCpf" showDetail="true" showSummary="false" />

Agora o botão responsável pela chamada da função por validar o formuário e verificar se o cpf é válido:

<p:commandButton  id="cbtIncluir" value="#{msg['botao.incluir']}" 
	actionListener="#{managedBean.salvar}" onclick="return validaForm();" update="painelOndeEstaoOsCampos" />

Essa implementação foi de fundamental importância no meu caso, e espero que possa ajudar mais pessoas que também necessitem dessa questão.
Abraço a todos,
Lessandro

Crie um website ou blog gratuito no WordPress.com.

Crie um site como este com o WordPress.com
Comece agora