Valor padrão para um atributo
25/07/2012 18:46
0
Olá amigos,

Sou iniciante em Groovy/Grails e estou precisando de ajuda, pois estou fazendo uma classe a qual tem um atributo relacionado e este precisa ser inicializado com um valor padrão e não deve aparecer no formulário, ou seja, seja setado debaixo dos panos e ir direto para o banco, para que possa ser alterado posteriormente por outros processos.

inicialmente minha classe está assim:
class Candidato {
...
static belongsTo = [status:StatusCandidato]

static mapping = {
status column:'status_id'
}


Eu preciso passar um valor padrão para este atributo status. Até consegui fazer isso pelo _form.gsp, mas como disse antes, não quero que este atributo apareça no formulário, então irei removê-lo de lá.

Alguem sabe como me ajudar?

Obrigado.
Tags: valor, padrao, atributo, relacionada, relacionamento


0
Seta ele como nulo na constraint creio que te ajuda!

class Candidato {
...
static belongsTo = [status:StatusCandidato]

static constraint = {
status(nullable: true)
}

static mapping = {
status column:'status_id'
}


0
mas quando vou poder atribuir um valor ao atributo?

porque o que eu quero é que toda vez que seja realizado um cadastro, automaticamente seja atribuido o valor "Pendente"
25/07/2012 20:47


1
Olá, Djonathas.

Acho que o que você quer é isso:
http://grails.org/doc/latest/guide/GORM.html#eventsAutoTimestamping

Por exemplo, basta por algo como
def beforeInsert() {
pendente = false
}

na tua classe GORM.

Só isso mesmo, não precisa configurar um monte de listener ou coisas assim como no Java+Hiberante.


0
Certo, acho como sou iniciante não consegui entender direito como utilizar isso...

mas achei estranho você dizer para utilizar pendente = false, sendo que o nome do meu atributo é status...

até tentei fazer desta maneira, mas ainda sim não resultou em nada, o sistema continua a pedir um valor para o campo...

eu tentei também fazer isso:

def afterInsert() {
status = new StatusCandidato("Pendente")
}


mas também não deu certo...
26/07/2012 18:16


0
Olá,

amigo, usei um campo qualquer como exemplo. O que quis mesmo explicar foi o campo de "gatilho" que pode ser colocado em classes GORM ;)

Veja, tem certeza que precisa de um afterInsert() e não de um beforeInsert()?

E o código
status = new StatusCandidato("Pendente")

Só funcionará se a classe StatusCandidato tiver um construtor E SE tiver um atributo status do tipo StatusCandidato na sua classe Candidato.

Boa sorte.



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