Problema para Instanciar classe utilizando String (classForName)
11/01/2017 17:56
0
Para recuperar uma instância de uma classe, a partir de uma String, estou utilizando:

grailsApplication.getClassForName('nomeClasse')

Tudo funciona bem se essa classe estiver em "grails-app", mas retorna null se estiver em "src/main/groovy"

Alguém sabe como instanciar uma classe de  "src/main/groovy" utilizando uma String com o nome da mesma?
Tags: Grails classforname groovy


0
Tentou Class.forName(...)?
Vai te retornar a meta classe, e aí vc instancia com newInstance() caso tenha um construtor padrão.

Agora, não dá pra injetar a instancia via spring??


0
rs verdade Magno. Não preciso do grailsApplication pra isso mesmo.
Obrigado!


0
Que bom que deu certo, mas agora fiquei curioso não dá para fazer oq vc quer com injeção de dependencias? Fica um código mais limpo e mais testável


0
Bom, não que eu saiba. Estou fazendo uma espécie de construtor de formulários. Do tipo em que o usuário configura os campos que vai querer no formulário (que será renderizado posteriormente no cadastro do mesmo).
Então para armazenar os campos do tipo combo ou seleção múltipla, eu precisei salvar também o nome da tabela em que estão salvas as opções de seleção destes campos.
Ou seja, na renderização do formulário, eu verifico o nome da tabela armazenada de cada campo e recupero os seus valores. Agora utilizando o: Class.forName('nomeTabela').list()

Mas se tiver alguma dica pra esse problema será bem vinda, ainda estou esboçando a solução aqui rs.

Abraço.


0
Entendi, neste caso não dá para usar injeção mesmo
Porem, em se tratando de classes de domínio, sugiro utilizar 
grailsApplication.getDomainClass(className)

Detalhe que se o nome da classe for unico, vc pode suprimir o pacote.

Esse método não retorna o Class, e sim um GrailsDomainClass, o qual possui métodos que te auxiliam a inspecionar os atributos e relacionamentos daquele domain. Pode ainda chamar newInstance() diretamente nele para criar uma nova instancia do domain, ou acessar .clazz para retornar o objeto Class



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