Como filtrar uma lista dentro de um from na tag g:select?
03/09/2014 12:09
0
Prezados amigos,

Gostaria de saber como faço para filtar uma lista dentro de um from na tag g:select.

Como um exemplo hipotético simples, o que devo fazer no códio abaixo para trazer apenas as companhias que tem o atributo nome começando pela letra A? Gostaria de usar um parâmetro chamado "letraInicial".


<g:select name="user.company.id"
from="${Company.list()}"
value="${user?.company.id}"
optionKey="id" />


Suponha que o controller já está configurado adequadamente para considerar o parâmetro letraInicial:


def list () {
flash.letraInicial = params.letraInicial

if(!params.max) {
params.max = 10
}
def query
def criteria = Company.createCriteria()
def results

query = {
and {
like("nome", params.letraInicial + '%')

}
}

results = criteria.list(params, query)

render(view:'list', model:[ companyList: results ])

}
Tags: filtro;g:select;from;list;filter


1
Olá Pedro,
É simples, bata fazer assim:

<g:select name="user.company.id" from="${Company.findAllByNomeIlike("a%")}" value="${user?.company.id}" optionKey="id" />


É só um exemplo, nesse caso sempre filtrará pelas Companys que possuem nome começando com "a" (case insensitive, se quiser case sensitive basta remover o "I" do "NomeIlike()"), para filtar por uma letra variável, basta passar um parâmetro para o GSP e substituir o "a" por esta variável.

Att,
03/09/2014 13:24


0
Olá Dyego,

Obrigado pela resposta. Mas eu gostaria de ir um pouco mais longe realmente passando um parâmetro no form e lendo-o a partir do controller, pois minha ideia é acessar dados de uma outra tabela relacionada. Como posso fazer isto?

Obrigado pelo seu tempo!

03/09/2014 14:38



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