customizando validator em grails

4

Click here to load reader

Upload: devmedia

Post on 30-Jun-2015

1.192 views

Category:

Technology


0 download

DESCRIPTION

Neste artigo veremos como customizar um validator para um atributo específico em uma aplicação web feita em grails.

TRANSCRIPT

Page 1: Customizando validator em grails

www.devmedia.com.br – Todos os direitos reservados

Atenção este é um post gratuito publicado no site da Devmedia e publicado no Slideshare na

conta da própria Devmedia. Sua republicação não é autorizada.

Para ler e outros artigos de seu interesse, acesse http://www.devmedia.com.br/

Customizando Validator em Grails Neste artigo veremos como customizar um validator para um atributo específico em uma aplicação web

feita em grails.

1. Introdução

Todos somos sabedores de que a consistência das informações em uma

aplicação, seja ela web ou não, é coisa séria e que devemos estar sempre

atentos para não passarmos batidos e incluirmos dados inconsistentes em

nosso sistema gestor de base de dados. Como estamos falando especificamente

de aplicações web feitas em Grails, quero compartilhar com vocês a forma com

que esse framework valida suas informações, além de ensinar como customizar

esse tipo de recurso, que é chamado de validator.

2. Validação no Grails

As validações de dados feito a nível de modelo no Grails são realizadas

utilizando a API Spring Validator. Essa API, apesar de ser um pouco complexa

de se utilizar, o Grails, através dos recursos dinâmicos da linguagem Groovy,

simplifica essa tarefa disponibilizando para o desenvolvedor um mecanismo

chamado de constraints que são declarações de regras de validações aplicadas

a cada atributos do modelo que necessitem ser validados antes de serem

persistidos.

Para entendermos melhor como tudo isso funciona, vamos analisar o seguinte

código:

Listagem 1: Código inicial

1

2

3

4

5

class Contato {

String nome

String email

Page 2: Customizando validator em grails

www.devmedia.com.br – Todos os direitos reservados

6

7

8

9

10

11

static constraints = {

nome(blank:false)

email(blank:false,email:true)

}

}

No exemplo anterior, a classe Contato possui dois atributos: nome e email.

Ambos não podem ser vazios e o atributo email só pode aceitar valor no padrão

válido para email.

O Grails possui vários validators disponíveis para o desenvolvedor utilizar, como

o próprio blank e email, além de size, inList, max, maxSize, min, minSize,

notEqual, nullable, unique, url, etc. Porém existe um tipo especial que é

utilizado para customizar sua própria validação, que se chama validator.

Para usar o validator customizado basta incluir um closure com a expressão de

validação. Esse closure envia 2 parâmetros que são: o valor e a instância do

modelo.

A expressão do closure deve retornar um dos seguintes valores:

o Null ou true: Indica que o valor e válido. o Null: Indica que o valor é inválido e usa a mensagem de erro padrão. o String: Código da mensagem de erro presente no arquivo de mensagens. o Lista: Código da mensagem de erro presente no arquivo de mensagens com

seus argumentos.

Para o leitor entender melhor como tudo isso funciona, veja a seguir, um

exemplo de customização de validator.

Listagem 2: Customização de Validator

1

2

3

class Teste {

Integer diaSemana

String finalSemana

Page 3: Customizando validator em grails

www.devmedia.com.br – Todos os direitos reservados

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

String sexo

static constraints = {

diaSemana (validator:{ value, object ->

return value > 0 && value < 8

})

finalSemana (validator:{ value, object ->

if (![‘sábado‘,’domingo’].contains(value)) {

return ‘custom.erro.finalSemana’

}

})

sexo (validator:{ value, object ->

if (![‘M‘,’F’].contains(value)) {

return [‘custom.erro.sexo’, value]

}

})

}

}

Para concluir nosso exemplo, veja como fica o arquivo de mensagens presente

no diretório i18n.

Listagem 3: Concluindo o exemplo

1

2

custom.erro.finalSemana=Valor não permitido, use sábado ou domingo.

custom.erro.sexo=Valor {0} inválido para sexo, use M ou F.

Page 4: Customizando validator em grails

www.devmedia.com.br – Todos os direitos reservados

3. Conclusão

Como podemos perceber, validação de dados em Grails é muito simples de

implementar. Além do framework disponibilizar vários validators, ainda

podemos customizar esse recurso da maneira que acharmos necessário para

manter a integridade das informações em nossos projetos. Também vimos que

podemos mapear as mensagens de erro geradas pelos validators de maneira

simples e direta, integrando esse recurso a um outro, também muito

importante em uma aplicação web, que se chama internacionalização.

4. Referências

Grails - Validators. Disponível

em:http://grails.org/doc/latest/ref/Constraints/validator.html. Acessado em:

07/04/2012

Grails - Validations. Disponível

em: http://grails.org/doc/latest/guide/validation.html. Acessado em:

07/04/2012