Dúvida com <g:select> !!
29/09/2011 08:22
1
Olá, pessoal!

Estou com a seguinte dúvida:

Tenho uma classe "Cargo" no meu projeto e na minha tela "create.gsp" do meu CRUD eu quero recuperar uma listagem desses cargos baseados em um critério específico. Portanto, não posso usar um Cargo.list(). O código abaixo não me serve:


<g:select name="cargo.id" from="${Cargos.list()}" optionKey="id" value="${cargoInstance?.cargo?.id}" />


O que pensei em fazer foi criar um método na minha classe controladora que retornasse uma lista de cargos baseado em um critério específico, como abaixo:


def retornaCargos = {

def cargos = []
def cc = CentroDeCusto.findByEmpresa(Empresa.findByNome("Minha empresa"))
cargos = Cargo.findAll("from Cargo as cargo " +
"where centroDeCusto = ?", cc)
[cargos : cargos]

}


Minha dúvida é: Como faço para recuperar o resultado no meu <g:select>? A solução acima é a mais indicada? Alguém já passou por algo parecido?

Obrigado!
Tags: g:select, create.gsp, método


0
Oi Carlos, você recuperar os dados do seu select exatamente como faria com um input "convencional". No seu exemplo, o seu controlador teria um código como o abaixo:


def cargo = cargo.get(params["cargo.id"])




0
Olá, Kico!

Entendi a sua sugestão, mas ainda não é isso... Na verdade, essa regra tem que vir do meu controlador mesmo. É uma regra interna: O usuário vai para a página "create.gsp" da classe "UsuarioEspecífico" (extends Usuario), para cadastrar um novo usuárioEspecifico. Este usuário está associado à um cargo, que também deve ser específico! Não posso listar no meu select cargos de outras empresas, entendeu?

O que eu queria fazer nesse caso era listar no meu .gsp uma lista de cargos pertencentes SOMENTE à empresaEspecífica e não à todas as empresas...
29/09/2011 09:17


0
Ahn!!!! :D

Bom, neste caso é uma questão de lógica interna do seu controlador mesmo. Por "recuperar o resultado no meu select" você quer dizer como expor o conteúdo na sua página gsp?

Neste caso, é fácil. É exatamente como você está fazendo. Só que um pouquinho diferente.

Ao invés de


<g:select name="cargo.id" from="${Cargos.list()}" optionKey="id" value="${cargoInstance?.cargo?.id}" />


Você vai passar a lista de cargos presente no seu model. Então ficaria algo como

<g:select name="cargo.id" from="${cargos}" optionKey="id" value="${cargoInstance?.cargo?.id}" />


0
Ok, Kico! Vou tentar fazer isso! Preciso apenas acertar a query do HQL... :-)

Obrigado!
29/09/2011 12:06



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