captura de checkbox array de valores
28/12/2011 15:59
0
A pergunta é simples, mas como sou novato, não tenho experiencia com java, e não achei em nenhum outro canto, lá vai.

Tenho um form com checkbox no estilo:

type="checkbox" name="materiais[0]"
type="checkbox" name="materiais[1]"
type="checkbox" name="materiais[2]"

A dúvida é como pego esses valores. Tentei da seguinte forma:

def materiais = params.materiais //imagino que venha como array

faço um for em materiais e tento instanciá-los...

for(material in materiais) {

material = Material.get(material)

}

mas não tá funcionando.

como pego esse array params.materiais?
Tags: request, checkbox, array


0
eu faço assim:

defino meus checkboxes como (exemplo):

<g:checkBox name="check" value="${objInstance.id}" checked="${false}" />


no controller:

def valores = params?.check
...

if (valores) {
List list = new ArrayList()
if ( valores.toString().indexOf("]") > 0 ) {
//mais de um checkbox foi selecionado
for (String s: valores) {
def objInstance = model.Obj.get(Long.parseLong(s))
if (objInstance) {
list.add(ObjInstance)
}
}
} else {
// somente um checkbox foi selecionado
def objInstance = model.Obj.get(Long.parseLong(valores))
if (objInstance) {
list.add(objInstance)
}
}
}
else {
flash.message = "Nenhum item foi selecionado."
redirect(action: "list")
}


t+
28/12/2011 18:14


0
vlw Rodrigo!


0
Mais uma dica: o código sugerido pelo nosso amigo Rodrigo pode ficar mais limpo se utilizarmos .list para carregamos o array.desta forma, independentemente de se foram selecionados vários ou um único elemento, o params retornará um array (uma lista, na verdade). O código então ficaria reduzido a uma linha: params.list("check").


0
Hum ... melhorou!


0
um dos trechos que usei o código ficou assim:

def acoes = params.list("acao")
def count = 0
for(acao in acoes) {
//identificar ação
acao = Acao.get(acao)
//ação válida e não associada
if(acao && !papel.acoes.find(acao.id)) {
papel.addToAcoes(acao).save()
count++
}
}

e um dos checkboxes ficou assim:

<input type="checkbox" name="acao" value="${acao.id}" <g:if test="${papel.acoes.contains(acao)}">checked="checked"</g:if>>

no momento ainda prefiro usar html para alguns componentes do form.


0
opa .. um bug que já tinha solução :D ..

if(acao && !papel.acoes.contains(acao)) {



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