Validator Struts 1.3 para CNPJ / CPF

Ae Pessoal!

Estou com dificuldades para personalizar uma validação no STRUTS 1.3 para CNPJ e CPF, tanto pelo cliente quanto pelo servidor.

Não estou acertando como configurar o validator-rules e montar a classe responsável pela validação… se alguém puder me auxiliar em algo, seria de grande ajuda.

Se alguém já implementou e quiser compartilhar, seria ótimo também!

Abraços,

[ ]`z
Fábio Heleno
(FaHeCoN)

Você já declarou o plug-in validator no struts-config.xml?

<plug-in className=“org.apache.struts.validator.ValidatorPlugIn”>
<set-property property=“pathnames” value="/WEB-INF/validation/validator-rules.xml, /WEB-INF/validation/validation.xml"/>
</plug-in>

Sim… inclusive já uso validação em cliente para outras situações.

A questão é montar essa validação especifica para CNPJ/CPF, não sei como proceder para este tipo, já que é personalizado, diferente do modelo required, long, date, mask… que já vem pronto no struts.

Olá, eu fiz assim:

validation.xml

validator-rules.xml



<![CDATA[
function validateCpf(form) {
var isValid = true;
var i = 0;
var fields = new Array();
var field = null;
var omatchName = eval('new ’ + jcv_retrieveFormName(form) + '_cpf() ');

                var filtro = /^\d{3}.\d{3}.\d{3}-\d{2}$/i;

                for (var x in omatchName) {
                    if (!jcv_verifyArrayElement(x, omatchName[x])) {
                        continue;
                    }

                    field = form[omatchName[x][0]];

                    if (!jcv_isFieldPresent(field)) {
                        fields[i++] = omatchName[x][1];
                        isValid = false;
                        break;
                    }

                    var fieldAux = field.value;

                    if(!filtro.test(fieldAux)) {
                        fields[i++] = omatchName[x][1];
                        isValid = false;
                        break;
                    }

                    fieldAux = fieldAux.replace(/[^0-9]/g, "");

                    if(fieldAux.length != 11 || fieldAux == "00000000000" || fieldAux == "11111111111" || fieldAux == "22222222222" || fieldAux == "33333333333" || fieldAux == "44444444444" || fieldAux == "55555555555" || fieldAux == "66666666666" || fieldAux == "77777777777" || fieldAux == "88888888888" || fieldAux == "99999999999") {
                        fields[i++] = omatchName[x][1];
                        isValid = false;
                        break;
                    }

                    soma = 0;
                    for(i = 0; i < 9; i++) {
                        soma += parseInt(fieldAux.charAt(i)) * (10 - i);
                    }
                    resto = 11 - (soma % 11);
                    if(resto == 10 || resto == 11) {
                        resto = 0;
                    }

                    if(resto != parseInt(fieldAux.charAt(9))) {
                        fields[i++] = omatchName[x][1];
                        isValid = false;
                        break;
                    }

                    soma = 0;
                    for(i = 0; i < 10; i ++) {
                        soma += parseInt(fieldAux.charAt(i)) * (11 - i);
                    }

                    resto = 11 - (soma % 11);
                    if(resto == 10 || resto == 11) {
                        resto = 0;
                    }

                    if(resto != parseInt(fieldAux.charAt(10))) {
                        fields[i++] = omatchName[x][1];
                        isValid = false;
                        break;
                    }
                }
                if (fields.length > 0) {
                    jcv_handleErrors(fields, field);
                }
                return isValid;
            }
            ]]>
        </javascript>

Funcionou bem.
Esse código é pra validar no lado do cliente. Pra validar no servidor vc vai precisar implementar a validação na classe br.com.validator.ValidatorGeral.
Até.