Primeira opção do G:select só apresenta valor null
09/02/2015 11:02
0
Bom dia moçada, estou com a seguinte dúvida, tenho o g:select abaixo (os valores são fictícios):

<g:select name="selecione_cor" from="${['Branco','Azul','Amarelo','Verde']}"

onchange="${remoteFunction(
controller: 'corControl',
action: 'corEscolhida',
params: '\'selecione_cor=\' + this.value',
update: 'corDiv'
)}"/>

Está quase tudo funcionando corretamente, as opções do select aparecem, inclusive o "Branco" aparece como opção default, porém no controller(corControl) fiz um teste com o comando println(params.selecione_cor) para imprimir o valor das opções do menu à medida que vc seleciona cada cor, só que quando o menu é acessado pela primeira vez, no menu é carregado a opção "Branco" como default, porém o println retorna que o valor é null, se seleciono outra opção e depois novamente "Branco" aí o println retorna o valor corretamente como Branco, alguém sabe como resolver este "detalhe"? Vlw.
Tags: g:select, dropdown, onchange, remotefunction


1
Isso acontece porque nenhum valor foi selecionado para executar o método onchange, uma
solução seria na tag g:select adicionar noSelection="['':'-- selecione --']" como valor
default.. depois no seu método g:remoteFunction adiciona uma validação no onLoading afim
de verificar se o valor da cor.. se for vazia exibi um alert.
09/02/2015 14:17


0
Weibe vlw pela dica, o onLoad no remoteFunction pode ser realmente uma alternativa, não havia pensado nessa possibilidade, consegui contornar o problema com o auxílio do bom e velho "Elvis", na action corEscolhida do controller corControl eu declarei uma variável com o operador Elvis de forma que se a cor for null(que é o valor padrão quando o g:select é carregado), o valor padrão será a cor "Branco" ficando assim:

def corSelecionada = params.selecione_cor ? : 'Branco'

apesar de resolvido, se mais alguém tiver outras soluções serão bem vindas, não sei se através da optionKey ou optionValue no g:select também resolvem, fiz uns testes aqui com eles mas sem sucesso. Vlw!
09/02/2015 16:33


1
Já que a cor branca e a default no sua tag g:select adiciona
noSelection="['Branco':'-- selecione --']" ou seja quando nenhuma opção for selecionada
a cor branca será enviada.. dai você fira o if do seu controller.
09/02/2015 21:10


0
Boa Weibe! Essa também é uma alternativa, porém somente no caso em que vc tem um range definido como no exemplo que informei [Branco, Azul, ....], se for um List com consulta dinâmica, talvez funcionasse mas com uns ajustes, mas tá valendo!
10/02/2015 10:30



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