Problemas para carregar atributo (JSON)
12/06/2009 00:00
0
Boa tarde, galera!

Tenho as seguintes classes de domínio:
class Municipio {

String nome
Double area
Estado estado

static belongsTo = [Estado]

static constraints = {
nome(size:0..200)
}

static mapping = {
table 'municipio'
version false
id column:'gid'
id(generator:'sequence',params: sequence:'municipio_sequence'])
}

}

E:
class Estado {

String nome
String UF

static hasMany = [listMunicipio:Municipio]

static constraints = {
nome(size:0..200, blank:false)
UF(size:0..2)
}

static mapping = {
table 'estado'
version false
id column:'gid'
id(generator:'sequence',params:[sequence:'estado_sequence'])
}
}

Tenho também o seguinte controller:
import grails.converters.JSON;

class MunicipioController {
def getMunicipioJson = {
def municipios = Municipio.list(params)
def municipiosJSON = municipios as JSON
render municipiosJSON
}
}

Meu problema é o seguinte:
Preciso acessar o atributo 'nome' da classe 'Estado'.

Se eu tentar acessá-lo através de uma iteração:
municipios.each {
println it
}


Eu consigo o que eu quero.

Mas se eu tentar acessar a variável que armazena o JSON ('municipiosJSON'), para pegar o valor que eu quero, esta só contém o valor do atributo 'id' referente ao 'Estado', e nada de aparecer o valor para 'nome'.

Dúvidas:
Como faço pra retornar o valor para o atributo 'nome'?

Grato pela atenção,
Rodrigo
Tags: Grails


0
Ih... Consegui resolver.

Eu inseri a linha no meu controller:
ConverterUtil.getInstance().grailsApplication = new DefaultGrailsApplication();

Que me retornou a propriedade 'nome', que eu queria.

Meu controller ficou assim:
import grails.converters.JSON
import org.codehaus.groovy.grails.web.converters.ConverterUtil;
import org.codehaus.groovy.grails.commons.DefaultGrailsApplication;

class MunicipioController {
def getMunicipioJson = {
def municipios = Municipio.list(params)
ConverterUtil.getInstance().grailsApplication = new DefaultGrailsApplication();
render municipios as JSON
}
}


Ainda não sei as razões, mas quando descobrir eu posto aqui.
Espero que exista alguma configuração que deixe essa conversão como default.

Valeu!
12/06/2009 00:00


0
Olha eu aqui de novo...

Bom... Se eu tivesse lido a referência do Grails para conversores (<!-- m --><a class="postlink" href="http://grails.org/Converters+Reference">http://grails.org/Converters+Reference</a><!-- m -->), teria visto que:

The default Converters (in the grails.converter package) render Domainclass associations as ID's, while the Deep Converters (in the grails.converters.deep package) also fully render the associations (nested domainclass instances) and also handle circular relations. The difference between those converters only affects how Domain Class instances are handled, all other types of objects are serialized similar.

To use the deep conversion, as opposed to the default conversion, you just have to import the Converter from the grails.converters.deep package.


Que resolveria meu problema.
12/06/2009 00:00



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