Valitation CPF e CNPJ Grails 3
17/09/2015 22:57
0
Gostaria de saber se alguém já criou uma forma simples de validação (lado do servidor) de CPF e CNPJ, para o Grails 3.0.x.

Digo Grails 3 pois vi que a maioria usa como solução para isso o plugin br-validation?. Porém no Grails 3 não existe mais essa utilização de plugins (e pelo menos eu não consegui utilizar nenhuma solução .jar para isso).

Tentei criar uma clousure:

def validateCpf = { cpf ->

try{
boolean validado = true
int d1, d2
int dg1, dg2, resto
int dgcpf

d1 = d2 = 0
dg1 = dg2 = resto = 0

for (int i = 1; i < cpf.length() -1; i++) {
dgcpf = cpf.substring(i -1, i) as Integer
d1 = d1 + ( 11 - i ) * dgcpf
d2 = d2 + ( 12 - i ) * dgcpf
}

resto = (d1 % 11)
dg1 = (resto < 2) ? 0 : 11 - resto

d2 += 2 * dg1
resto = (d2 % 11)
dg2 = (resto < 2) ? 0 : 11 - resto

def dgverif = cpf.substring(cpf.length()-2)
def dgresult = (dg1 as String) + (dg2 as String)

return dgverif == dgresult
}catch (Exception e){
return false
}
}?
 
e usá-la na constraint:

static constraints = {
?cpf validation: validateCpf
}?

Mas isso parece que não funciona (somente se eu declarar a clousure ali dentro da constraint, mas aí fica muito grande e tosco.

Alguém tem uma solução ou idéia? FLW!!!!
Tags: cpf cnpj validação validation validate constraint grails3 br-validation


0
Grails é uma aplicação web como qualquer outra feito em java, assim recomendo utilizar uma biblioteca java, no caso https://github.com/caelum/caelum-stella/wiki/Download

Eu mesmo evito utilizar ao máximo os plugins.
18/09/2015 08:29


0
Eu precisei e como ele não foi atualizado eu fiz um fork do projeto e atualizei para a versão 3 do grails ainda não tive tempo de manda um pull request para ver se os caras adiciona o plugin no bintray.
Se quiser usar https://github.com/weibemoura/BrValidation?
Para compilar e instalar no seu repositório local maven
grails clean?
grails package-plugin
grails install


E no seu arquivo build.gradle
dependencies {    
  runtime 'org.grails.plugins:BrValidation:0.3'
}
18/09/2015 09:21


3
É simples Vitor, basta colocar seu código de validação em um service e chama-lo na constraint do atributo, assim:
?
Class SuaClass{
?String cpf
?static constraints = {
?cpf (validator:{value, thiz, errors -> return thiz.seuService.validateCpf(value, thiz, errors)})
?}
}

ai no seuService vc coloca seu validateCpf, ai se o número não for válido vc adiciona um "errors" no objeto:
?   ?errors.rejectValue( "cpf", "sua_chave_para_mensagem_erro_i18n")
     return false
se der tudo certo basta vc retornar "true"
18/09/2015 09:29


0
Obrigado pela resposta galera.

Vou usar essa solução do Dyego, que é a que eu estava tentando. Só não sei se isso é uma boa prática (Usar um Service na camada de Domain)


0
Eu fiquei na duvida agora, não seria mas pratico usar o Hibernate Validator que ja tem estas e muitas outras validações ?
04/12/2015 17:01


0
Você já testou o Hibernate Validator com o Grails? Quando tiver a oportunidade eu vou testar e comento aqui.



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