Validar CNPJ ou CPF
18/09/2008 00:00
0
Como fazer a aplicação validar se um CNPJ é válido numa tela de cadastro de clientes. A rotina em JAVA até ja tenho. Mas estou confuso onde coloco essa chamada, para que ela venha bonitinho iguals quando colocamos as restrições direto nas constraints.
Tags: Grails


0
Use a constraint "validator" fazendo uma chamada para o seu método de validação.
13/10/2008 00:00


0
Estou começando em grails, poderiam me indicar uma exemplo da
constraint 'validator' ?
Eu tenho a classe de validacao em java, mas seria melhor transformar
em grooby; colocar no src/java ou no lib um jar ?

Obrigado !

Evandro
02/11/2008 00:00


0
Boa tarde, Evandro.

Dê uma olhada na documentação de referência. É só procurar por "Validator".

http://grails.org/doc/1.0.x/

Abraço!
03/11/2008 00:00


0
Valeu!

Abraço,

Evandro
03/11/2008 00:00


0
Aqui vai um exemplo de como criar uma nova Constraint que usa o Caelum Stella.

Classe CPFConstraint

É praticamente auto explicativa graças ao suporte já oferecido pelo Grails (via AbstractConstraint).

import org.codehaus.groovy.grails.validation.AbstractConstraint
import org.springframework.validation.Errors

import br.com.caelum.stella.validation.InvalidStateException
import br.com.caelum.stella.validation.CPFValidator

/**
* @author Marcos Pereira
*/
class CPFConstraint extends AbstractConstraint {

public static final String CPF_CONSTRAINT = "cpf"
public static final String CPF_MESSAGE_CODE = "default.cpf.message"

Boolean formatted = false
Boolean cpf = true

void setParameter(Object constraintParameter) {
super.setParameter(constraintParameter)
if(constraintParameter instanceof Boolean) {
cpf = (Boolean)constraintParameter
} else if(constraintParameter instanceof Map) {
formatted = constraintParameter.get('formatted', false)
cpf = constraintParameter.get('cpf', true)
}
}

public void processValidate(Object target, Object propertyValue, Errors errors){

if(!cpf) {
return;
}

if(validateCpf(propertyValue)) {
def args = [constraintPropertyName, constraintOwningClass, propertyValue]
super.rejectValue(
target,
errors,
CPF_MESSAGE_CODE,
"not.${CPF_CONSTRAINT}",
args as Object[]);
}

}

public String getName() { CPF_CONSTRAINT }

boolean supports(Class type) {
return type != null && String.class.isAssignableFrom(type);
}

private validateCpf(cpf) {
def validator = new CPFValidator(formatted)
return validator.invalidMessagesFor(cpf).empty
}

}

Os detalhes ficam mais por conta do nome da constraint (metodo getName), do tipo de objetos que ela pode validar (metodo supports) e da validação em si (metodo processValidate). Os outros trechos de código usam o Stella para fazer a validação em si ou estão relacionados a como internacionalizar as mensagens de erro que essa constraint irá gerar.

Alteração no Config.groovy

Depois, precisamos indicar ao Grails a nova constraint. Fazemos isso através do Config.groovy:

ConstrainedProperty.registerNewConstraint(CPFConstraint.CPF_CONSTRAINT, CPFConstraint.class)


Uso da nova Constraint

Pode ser de duas maneiras: uma que requer cpfs formatados e outra sem formatação:

public class Pessoa {
String nome
String email
String cpf
static constraint = {
cpf(cpf:true) // espera cpfs SEM formatação
}
}


public class Pessoa {
String nome
String email
String cpf
static constraint = {
cpf(cpf:[formatted:true]) // espera cpfs COM formatação
}
}

valeuz...


0
Olá Marcos.
estou com problemas para indicar ao Grails a nova constraint...
coloquei a linha
ConstrainedProperty.registerNewConstraint(CPFConstraint.CPF_CONSTRAINT, CPFConstraint.class)
no config.groovy e quando compilo o console da a mensagem
Failed to compile configuration file C:\java\vsm\convenio\grails-app\conf\Config.groovy: No signature of method: static org.codehaus.groovy.grails.validation.ConstrainedProperty.registerNewConstraint() is applicable for argument types: (groovy.util.ConfigObject, groovy.util.ConfigObject) values: {[:], [:]}

Você pode me ajudar?
Obrigado
05/02/2009 00:00


0
Já resolvi o problema com um import no config.groovy...
mas não valida o cpf que digita no campo...
alguma ideia?
05/02/2009 00:00


0
Já que o grails se integra com o java, não seria interessante utilizar as validações desse projeto:

<!-- m --><a class="postlink" href="http://stella.caelum.com.br/">http://stella.caelum.com.br/</a><!-- m -->

[]'s
17/02/2009 00:00


0
[quote=&quot;Khaoz&quot;]Já que o grails se integra com o java, não seria interessante utilizar as validações desse projeto:

<!-- m --><a class="postlink" href="http://stella.caelum.com.br/">http://stella.caelum.com.br/</a><!-- m -->
[/quote]
Vc leu o post todo?
26/02/2009 00:00


1
Pessoal,

Estou criando um plugin para englobar o Caleum Stella e seus recursos, este código do Marcos vai estar presente por lá. Se forem usar o código aqui deste post, alguns pontos de atenção:

1) Substituir a linha:

if(validateCpf(propertyValue)) &#123;


por

if(!validateCpf(propertyValue)) &#123;


2) Substituir a linha

&quot;not.$&#123;CPF_CONSTRAINT&#125;&quot;, 


por

&quot;default.not.cpf.message&quot;,


3) No Config.groovy de vocês, importar a classe

import org.codehaus.groovy.grails.validation.ConstrainedProperty


4) Colocar o jar do caelum-stella no lib da aplicação

5) Criar as mensagens de i18n para todas as línguas que vocês irão utilizar com a chave:

default.invalid.cpf.message


Se vocês usarem algum lang que não tem esta chave e ocorrer um erro de validação, uma exception será disparada. Fiquem atentos.

Obrigado,

[]s,
12/08/2009 00:00


2
Sei que o post é antigo, mas vou colocar o link do plugin que ajuda na validação de CPF/CNPJ

BrValidation


0
O post é de 5 anos atrás, então não importa muito... Mas *acho* que o que o camarada queria era validação no navegador rs



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto