Constraints no grails, como o matches funciona?

1 resposta
lrgalego

Olá pessoal,

Estou utilizando as constraints dos objetos de domínido do grails para realizar algumas validações, entretanto estou evidenciando um comportamento um pouco estranho.

exemplo, tenho o seguinte objeto de domínio

class FixNumber {
	
	Integer ddd
	Integer number
	Integer voipNumber
	
    static constraints = {
		ddd(blank: false, matches:'^\d{2}$')
		number(blank: false, matches:'^\d{8}$' )
		voipNumber(blank: false, matches:'^\d{8}$')
    }
}

Se envio no meu formulário 1 no ddd o match aceita.
se envio 123 no ddd, o match aceita também.
se envio 123a ele aceita mas corta o a da minha string.

Alguém pode me explicar isso?

Obrigado pela atenção

1 Resposta

lrgalego

Olá pessoal.

Após algumas análises descobri o erro.
A constraint matches não funciona corretamente com inteiros.
Se no meu objeto de domínio as variaveis fossem Strings ao invez de inteiros o matches funciona perfeitamente.

Caso eu queira manter a tipagem forte, ou seja, o que é um inteiro fica como inteiro, eu posso fazer a minha própria constraint

ddd( validator: {
   return it.toString().matches('^\\d{2}$')
})

Espero que o post seja util para alguém :slight_smile:

Criado 19 de janeiro de 2010
Ultima resposta 26 de jan. de 2010
Respostas 1
Participantes 1