Parametros multi dimensionais
Postado em
01/03/2008 00:00

0

0
Pessoal, estou quebrando a cabeça e não consegui fazer isso funcionar...
Tenho em meu modelo a seguinte estrutura.
Pessoa{
...
Endereco endereco
}
Endereco {
Municipio municipio
}
Municipio {
...
}
para tal criei os seguintes atributos na view
<... inputs da pessoa ...>
<input type="text" name="endereco.logradouro">
<select ... name="endereco.municipio.id" ....
Só que de qualquer forma que eu tente no controller ele não coloca o endereco.municipio.id ou seja, como faço para atribuir uma valor quando tenho três ou mais níveis de objetos no modelo??
O erro
Message: Invalid property 'endereco.municipio' of bean class [Paciente]: Value of nested property 'endereco.municipio' is null
Caused by:org.springframework.beans.NullValueInNestedPathException: Invalid property 'endereco.municipio' of bean class [Paciente]: Value of nested property 'endereco.municipio' is null
Class: PacienteController
At Line: [93]
Code Snippet:
93: paciente.properties = params
Grato
<!-- s:wink: --><img src="{SMILIES_PATH}/icon_wink.gif" alt=":wink:" title="Wink" /><!-- s:wink: -->
Tags:
Grails
volnei
Pontos: 1

0

0
02/03/2008 00:00
Minha opinião é que isso é um bug: o grails não sabe como resolver as referências nulas quando o caminho é mais longo do que dois. Se vc alterar seu modelo para:
Endereco {
Municipio municipio = new Municipio()
}
É provável que funcione. Volnei, acho pertinente criar uma issue no Jira do Grails.
valeuz...
Marcos Silva Pereira
Pontos: 0

0

0
02/03/2008 00:00
[quote="Marcos Silva Pereira"]Minha opinião é que isso é um bug: o grails não sabe como resolver as referências nulas quando o caminho é mais longo do que dois. Se vc alterar seu modelo para:
Endereco {
Municipio municipio = new Municipio()
}
É provável que funcione. Volnei, acho pertinente criar uma issue no Jira do Grails.
valeuz...[/quote]
Valeu Marcos!! Era oque eu imaginava! Vou providenciar a issue!
volnei
Pontos: 1

0

0
02/03/2008 00:00
Opa, olha, não sei se é bem isto não.
Estou aqui escrevendo um artigo no qual há uma situação bem semelhante à descrita pelo Volnei. No caso, trata-se de um sistema para gerenciar bookmarks.
Ele tem duas classes:
class Categoria {
String nome
static hasMany = [links:Link]
}
class Link {
String nome
String url
String descricao
Categoria categoria
static belongsTo = Categoria
String toString() {"${this.categoria.nome} - ${this.nome}"}
}
Reparem na função toString do meu link. Funciona sem problemas. Se for para algo estar com problema, não sei se seria o GRails, mas sim o Groovy.
Henrique Lobo Weissmann (Kico)
Pontos: 1485

0

0
02/03/2008 00:00
Então Kico, é o problema é bem diferente... da forma que você expos funciona sim sem problemas os problema acontecem no terceiro nível de associação... ou seja se vc tivesse que passar "link.subcategoria.categoria.id" então ocorreria o erro! Cadastrei como uma issue lá e vou esperar e colocar a resposta aqui!
volnei
Pontos: 1

0

0
03/03/2008 00:00
Na verdade acho que o erro é um pouco mais embaixo....
<!-- m --><a class="postlink" href="http://jira.springframework.org/browse/SPR-1671%3bjsessionid=as_iYWL7zw_dn5GXz3?actionOrder=desc">http://jira.springframework.org/browse/ ... Order=desc</a><!-- m -->
volnei
Pontos: 1

0

0
03/03/2008 00:00
Mais uma coisa que acho que não faz sentido
Quando passamos os parâmetros ele cria uma dúzia de parametros no obj params por ex.
[
"dois":["tres":["test":"121231321"],
"tres.test":"121231321"],
"action":"save", "controller":"um",
"dois.tres.test":"121231321"
]
Acho que se o acesso pode ser feito como Multi-d como é citado não tem pra que ter as linhas em negrito...
volnei
Pontos: 1

0

0
03/03/2008 00:00
Volnei, isso é para permitir que vc possa escrever código Groovy assim:
def name = params.person.address.city.name
Ao invés de escrever assim:
def name = params['person.address.city.name']
O fundamento das linhas em negrito é esse: possibilitar a navegação nos parametros no idioma de Groovy.
valeuz...
Marcos Silva Pereira
Pontos: 0

0

0
02/06/2008 00:00
Ressuscitando o tópico para informar que essa issue foi resolvida:
<!-- m --><a class="postlink" href="http://jira.codehaus.org/browse/GRAILS-2575">http://jira.codehaus.org/browse/GRAILS-2575</a><!-- m -->
valeuz...
Marcos Silva Pereira
Pontos: 0