Chave não funciona no HashMap
14/03/2013 14:40
0
Fala pessoal,

Estou passando alguns params para um HashMap.

Me expliquem o porque do HashMap funcionar somente quando crio suas chaves dentro de uma String:

     
for(int i = 0; i < 5; i++){
if(params["enderecos[${i}].ativo"] == 'X'){
parametros.put("enderecos[${i}]", params["enderecos[${i}]"])
}else{
break
}
}
print parametros["enderecos[0]"] // retorna null


      String chave
for(int i = 0; i < 5; i++){
chave = "enderecos[${i}]"
if(params["enderecos[${i}].ativo"] == 'X'){
parametros.put(chave, params["enderecos[${i}]"])
}else{
break
}
}
print parametros[0] // retorna a lista
Tags: HashMap, Chave, String, Int, Null


0
Olá, Daniel.

É uma questão de Groovy e não de Grails.

Em Groovy um Map foi feito para, por padrão, ter chaves ou de números ou de Strings.

Se você faz isso:
[sentimento:'amor', cheiro:'lavanda']
o Groovy cria um Map com chaves String ('sentimento' e 'cheiro'). Seria o mesmo que fazer
['sentimento':'amor', 'cheiro':'lavanda']

Assim, se quiser que o nome da chave seja dinâmico, não tem jeito, tem que usar como expressão. Nos exemplos anteriores, não iria adiantar existirem objetos com os nomes "sentimento" ou "cheiro". Não seriam os seus conteúdos que seriam usados e sim as palavras, literalmente.

Para nomes de chaves dinâmicos em Maps em Groovy tem mesmo que fazer
["$sentimento":'amor', "$cheiro":'lavanda']
ou
["${sentimento.atributoX}":'amor', "${cheiro.atributoY}":'lavanda']

Espero ter ajudado.



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