Dúvida com <g:select multiple=true>
28/05/2014 02:14
0
Olá senhores, boa noite

Estou com uma dúvida, creio ser bastante simples. Já pesquisei bastante pela internet, livros e etc, mas não consegui resolver o meu problema.

É o seguinte, eu tenho um domain Grupo e outro domain Rules. Um grupo pode ter várias Rules, sendo assim, eu mapiei da seguinte forma:


class Grupo {

String nome

static hasMany = [rules: Rules]

static mapping = {
rules cascade: 'all-delete-orphan'
}
}

O domain Rules só tem um atributo chamado nome.

E no meu gsp eu fiz da seguinte forma:


<g:select
class="form-control"
name="grupo.rules"
from="${iquem.Rules.list()}"
multiple="multiple"
optionValue="nome"
/>


Só que no meu controller se eu fizer

println grupo?.rules


Ele sempre vem vazio. Como que eu faço para converter o meu select numa lista de rules dentro do meu objeto Grupo?

Obrigado pela atenção
Tags: multi-select, select, convert


0
ps: Não achei como editar o título depois de já salvo
28/05/2014 02:37


0
Oi Gustavo,

tem como nos mostrar melhor o código do seu controlador?


0
Olá Kico,

Obrigado pela sua atenção.

Meu controller não faz nada na verdade, só tento salvar um Grupo com as permissões setadas.

Segue abaixo o código do controller:


class GrupoController {

def index() {}

def save(Grupo grupo) {

grupo?.save()

}
}



No spring eu precisaria de um converter mas no Grails eu nao sei como fazer para dar certo
28/05/2014 13:45


1
Olá Gustavo!

Como você falou que o grupo tem apenas um atributo meu conselho é que faça o mapeamento da seguinte maneira:


class Grupo {

String nome
static hasMany = [rules: String]

static mapping = {
rules joinTable: [name:"grupo_rules", key: 'grupo_id', column: 'rule'], cascade: 'all-delete-orphan'
}
}

caso sua _form.gsp esteja parecido com:
[code]
<g:checkBox name="rules[]" value="pessoa:index"/>
<g:checkBox name="rules[]" value="pessoa:view"/>
<g:checkBox name="rules[]" value="pessoa:save"/>


Acredito que ira salvar corretamente


0
Eu consegui descobrir qual era o problema!

O Grails para conseguir fazer a conversão automaticamente para a entidade do relacionamento, obrigatoriamente você tem que passar o id no optionKey, ficando da seguinte forma:


<g:select
class="form-control"
name="grupo.rules"
from="${iquem.Rules.list()}"
multiple="multiple"
[b]optionKey="id"[/b]
optionValue="nome"/>
28/05/2014 22:52



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