Validar campo no servidor

3 respostas
P
Como tenho falado, eu estou em processo de aprendizagem com Java Web. Tenho uma página, conforme disposto abaixo:
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Cadastro de Clientes</title>
</head>
<body>
    <h1>Cadastro de Clientes</h1>
    <br></br>
	&lt;form action="multizone.jsp" method="POST"&gt;
	<p> Nome:
		&lt;input type="text" name "nome"/&gt;
		CPF/CNPJ:
		&lt;input type="text" name "cpf_cnpj"/&gt;
		RG:
		&lt;input type="text" name "rg"/&gt;
	</p>
	<p> Endereco:
		&lt;input type="text" name "endereco" size="50"/&gt;
		Bairro:
		&lt;input type="text" name "bairro"/&gt;
		Cidade:
		&lt;input type="text" name "cidade"/&gt;
	</p>
&lt;/body&gt;
&lt;/html&gt;
e tenho essa função para validar cnpj:
public class ValidaCpfCnpj {
	public static boolean valida_cpf_cnpj(final String CNPJ_CPF) {

		if(CNPJ_CPF.length() == 11) { //CPF
			int acumulador1 = 0;
			int acumulador2 = 0;
			int resto = 0;
			StringBuffer resultado = new StringBuffer();
			String digitoVerificadorCPF = CNPJ_CPF.substring((CNPJ_CPF.length() - 2),
															  CNPJ_CPF.length());
			for(int i = 1; i &lt; (CNPJ_CPF.length() - 1); i++) {
				acumulador1 += (11 - i) * Integer.valueOf(CNPJ_CPF.substring((i - 1), i));
				acumulador2 += (12 - i) * Integer.valueOf(CNPJ_CPF.substring((i - 1), i));
			}
			resto = acumulador1 % 11;
			if (resto &lt; 2) {
				acumulador2 += 2;
				resultado.append(2);
			}
			else {
				acumulador2 += 2 * (11 - resto);
				resultado.append((11 - resto));
			}
			resto = acumulador2 % 11;
			if (resto &lt; 2) {
				resultado.append(0);
			}
			else {
				resultado.append((11 - resto));
			}
			return resultado.toString().equals(digitoVerificadorCPF);
		}
		else if(CNPJ_CPF.length() == 14) { //CNPJ
			int acumulador = 0;
			int digito = 0;
			StringBuffer CNPJ = new StringBuffer();
			char[] CNPJCharArray = CNPJ_CPF.toCharArray();
			CNPJ.append(CNPJ_CPF.substring(0, 12));
			for(int i = 0; i &lt; 4; i++) {
				if(((CNPJCharArray[i] - 48) &gt;= 0) && 
				   ((CNPJCharArray[i] - 48) &lt;= 9)) {
					acumulador += (CNPJCharArray[i] - 48) * (6 - (i + 1));
				}
			}

			for(int i = 0; i &lt; 8; i++) {
				if(((CNPJCharArray[i + 4] - 48) &gt;= 0) && 
				   ((CNPJCharArray[i + 4] - 48) &lt;= 9)) {
					acumulador += (CNPJCharArray[i + 4] - 48) * (10 - (i + 1));
				}
			}

			digito = 11 - (acumulador % 11);
			CNPJ.append((digito == 10 || digito == 11) ? &quot;0&quot; : digito);
			acumulador = 0;
			for(int i = 0; i &lt; 5; i++) {
				if(((CNPJCharArray[i] - 48) &gt;= 0) && 
				   ((CNPJCharArray[i] - 48) &lt;= 9)) {
					acumulador += (CNPJCharArray[i] - 48) * (7 - (i + 1));
				}
			}
			for(int i = 0; i &lt; 8; i++) {
				if(((CNPJCharArray[i + 5] - 48) &gt;= 0) && 
				   ((CNPJCharArray[i + 5] - 48) &lt;= 9)) {
					acumulador += (CNPJCharArray[i + 5] - 48) * (10 - (i + 1));
				}
			}
			digito = 11 - (acumulador % 11);
			CNPJ.append((digito == 10 || digito == 11) ? &quot;0&quot; : digito);
			return CNPJ.toString().equals(CNPJ_CPF);		}
		return false;	}
}
Agora é o seguinte: Como eu faço para ao sair do campo(HTML) cpf_cnpj do meu formulário na minha página(lado cliente) e validar o cnpj ou cpf dessa classe que estará rodando no lado servidor?

3 Respostas

juniorsatanas

1 - cpf e diferente de cnpj

tu ta usando 2 tipos de dados em 1. se tu pegou um banco legado tudo bem… mas se tu ta fazendo do Zero da uma lida em POO OO POG e vc vai ver que Classe CPF e diferente de Classe CNPJ

tu pode usar Jquery para fazer essa validação facinho !

http://imasters.uol.com.br/artigo/12384/jquery/validacao_de_formularios_com_jquery/
P

Primeiramente, obrigado pela resposta, mas acho que não é isso. Esse exemplo mostra como validar, no sentido de verificar se todos os campos foram preenchidos. O que eu quiz fazer é que no momento em que eu preencher o campo cnpj, por exemplo, ele verifica se é ou não um cnpj válido. Por isso ele deve validar pela função que está rodando no lado servidor. Essa é minha dúvida. Quanto a ser cpf ou cnpj juntos ou não, no momento não vem ao caso. Eu só coloquei lá, porque eu baixei ela assim. Quanto a questão de melhoria no código, concordo plenamente com você, junior, mas eu coloquei apenas para exemplificar que ela roda no lado servidor.

juniorsatanas

ok !

Criado 11 de março de 2010
Ultima resposta 11 de mar. de 2010
Respostas 3
Participantes 2