Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login

Customizando Validator em Grails

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

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login

(opcional) Onde podemos melhorar?

Confirmar voto
0
 (0)  (0)

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

class Contato {

	String nome
	String email
	
	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:

  • Null ou true: Indica que o valor e válido.
  • Null: Indica que o valor é inválido e usa a mensagem de erro padrão.
  • String: Código da mensagem de erro presente no arquivo de mensagens.
  • 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

class Teste {

	Integer diaSemana
	String finalSemana
	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

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.

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

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Ajude-nos a evoluir: você gostou do post?  (0)  (0)

(opcional) Onde podemos melhorar?

Confirmar voto
Compartilhe:
Ficou com alguma dúvida?