Databind para lista de classe abstrata
10/01/2017 21:41
0
Tenho um domain que possui uma associação do tipo hasMany em que a associação aponta para uma classe abstrata, e tenho no sistema tres implementações desta classe abstrata.

Preciso pegar realizar o databind à partir de um request e montar uma instancia desta classe, sendo que no request existirão simultaneamente instancias das tres classes que podem ocorrer na associação.

O databinding do Grails pode tratar uma situação destas? Sei que pode lidar com classe abstrata mas utilizando apenas um tipo concreto, não com vários. ao mesmo tempo.
Como instruir o mecanismo de databinding sobre qual classe deve ser instanciada em cada ocorrência da associação?
Tags: Grails databind


0
Oi Magno,

nunca tentei, mas teoricamente, se forem registros já persistidos, ele irá lidar para você de forma transparente, pois como as classes herdam da abstrata, o GORM irá fazer a busca antes de passar os parâmetros para o seu controlador.

Agora, se for um databinding no qual os registros ainda não tenham sido persistidos, não tenho certeza se funcionaria. Caso não funcione, eu tentaria com um command object.


0
Sim, são instancias novas, não tem correspondente no banco.
Eu acabei percorrendo os parametros e montando os objetos na mão, mas não gostei. Como o uso de command objects resolveria este problema?


0
Os command objects são como as classes de domínio, tem o mesmo mecanismo de validação: a diferença é que são usados apenas para data binding e validação (mesmíssimas regras de constraint).

Então você poderia usar o Command Object para executar o data binding contra os atributos recebidos, incluindo um atributo adicional, chamado tipo. E então, no próprio objeto databingind, criar uma função que te retorne a instância do tipo desejado (com base no atributo adicional) para você, implementando um padrão Factory. 

Não é o melhor dos mundos, mas pelo menos você centraliza em um ponto só a instanciação correta deste tipo de objeto.


0
Entendi!
Daria para fazer o mesmo com @BindUsing direto nos domains, né??



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