Parametros multi dimensionais
01/03/2008 00:00
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=&quot;text&quot; name=&quot;endereco.logradouro&quot;>
<select ... name=&quot;endereco.municipio.id&quot; ....



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&#58; Invalid property 'endereco.municipio' of bean class [Paciente]&#58; Value of nested property 'endereco.municipio' is null

Caused by&#58;org.springframework.beans.NullValueInNestedPathException&#58; Invalid property 'endereco.municipio' of bean class [Paciente]&#58; Value of nested property 'endereco.municipio' is null

Class&#58; PacienteController
At Line&#58; [93]
Code Snippet&#58;
93&#58; paciente.properties = params



Grato
<!-- s:wink: --><img src="{SMILIES_PATH}/icon_wink.gif" alt=":wink:" title="Wink" /><!-- s:wink: -->
Tags: Grails


0
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 &#123;
Municipio municipio = new Municipio()
&#125;

É provável que funcione. Volnei, acho pertinente criar uma issue no Jira do Grails.

valeuz...


0
[quote=&quot;Marcos Silva Pereira&quot;]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 &#123;
Municipio municipio = new Municipio()
&#125;

É 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!
02/03/2008 00:00


0
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 &#123;
String nome
static hasMany = [links&#58;Link]
&#125;

class Link &#123;
String nome
String url
String descricao
Categoria categoria
static belongsTo = Categoria

String toString() &#123;&quot;$&#123;this.categoria.nome&#125; - $&#123;this.nome&#125;&quot;&#125;
&#125;


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.


0
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 &quot;link.subcategoria.categoria.id&quot; então ocorreria o erro! Cadastrei como uma issue lá e vou esperar e colocar a resposta aqui!
02/03/2008 00:00


0
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 -->
03/03/2008 00:00


0
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.

[
&quot;dois&quot;:[&quot;tres&quot;:[&quot;test&quot;:&quot;121231321&quot;],
&quot;tres.test&quot;:&quot;121231321&quot;],
&quot;action&quot;:&quot;save&quot;, &quot;controller&quot;:&quot;um&quot;,
&quot;dois.tres.test&quot;:&quot;121231321&quot;
]

Acho que se o acesso pode ser feito como Multi-d como é citado não tem pra que ter as linhas em negrito...
03/03/2008 00:00


0
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...


0
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...



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