Filtro em um ComboBox e salvar dados em outra tabela
01/02/2015 15:26
0
Boa tarde.
Estou fazendo um sistema de controle patrimonial em Grails, porém estou com algumas dúvidas no desenvolvimento de uma das funcionalidades.
Dando um resumida, todos os patrimônio possui um responsável, com isso tenho uma classe Responsavel e outra Patrimonio. Até aqui tudo tranquilo.
Agora estou desenvolvendo uma funcionalidade que exibe todos os patrimônios disponíveis (que não tem um responsável associado a ele), portanto criei uma classe PatrimonioDisponivel (com os atributos Responsavel e Patrimonio). As dúvidas que eu tenho são:

1ª Como eu faço um filtro para exibir, no ComboBox, apenas os patrimônios que não possuem um responsável associado.
2ª Depois que eu selecionar um responsável para o patrimônio eu precisarei salvar o ID do responsável na tabela tb_patrimonio, e por default, o Grails irá criar uma tabela tb_patrimonio_disponivel. Como eu faço para salvar a informação na tb_patrimonio.
3ª Já que eu não irei usar uma tabela tb_patrimonio_disponivel, como eu faço para o Grails não criar uma tabela dessa classe.

Caso eu não tenha sido claro em minhas necessidades, só perguntar que eu complemento.

Att,
Tags: grails filtro tabela


1
Oi Duke,

para não criar uma tabela basta não declarar sua classe dentro do diretório grails-app/domain. Toda classe ali criada irá automaticamente gerar uma tabela no banco de dados. Salve-a no diretório src/groovy

Para buscar os patrimonios que não possuem um responsável associado você pode escrever uma consulta como esta:


Patrimonio.withCriteria {
isNull('responsavel')
}


0
Kico,
Muito obrigado pela resposta.. A noite irei testar, depois dou um retorno se deu certo.

Att.
03/02/2015 16:51


0
Não funcionou.. :'(

Eu criei o filtro (filtrarPatrimonio) e e alterei a chamada no _form.gsp, porém parece que ele não chama o filtro que eu fiz, ele sempre retorno o ComboBox vazio.

Segue os trechos para ver se é eu que estou fazendo coisa errada..

_form.gsp
<g:select id="patrimonio" name="patrimonio.id" from="${filtrarPatrimonio}" optionKey="id" required="" value="${patrimonioDisponivelInstance?.patrimonio?.id}" class="many-to-one form-control"/>


PatrimonioDisponivelController
class PatrimonioDisponivelController {

static allowedMethods = [save: "POST", update: "PUT", delete: "DELETE"]

def index(Integer max) {
def filtrarPatrimonio = {
Patrimonio.withCriteria { eq("id", 12) }
//Patrimonio.withCriteria { isNull("responsavel") }

[filtrarPatrimonio: filtrarPatrimonio]
}

params.max = Math.min(max ?: 10, 100)
respond PatrimonioDisponivel.list(params), model:[patrimonioDisponivelInstanceCount: PatrimonioDisponivel.count()]
}

// def filtrarPatrimonio = {
// Patrimonio.withCriteria { eq("id", 12) }
// //Patrimonio.withCriteria { isNull("responsavel") }
//
// [filtrarPatrimonio: filtrarPatrimonio]
// }
...
}


Detalhe 01: Como sempre estava retornando em branco, fiz o critério do id para testar. O correto é o responsável nulo.
Detalhe 02: Como não estava funcionando o filtro dentro do index, eu coloquei fora, por isso dessa parte ai em baixo comentada.
05/02/2015 12:20



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