[RESOLVIDO] recuperar lista vraptor3  XML
Índice dos Fóruns » Frameworks e Bibliotecas brasileiros
Autor Mensagem
salmaox
JavaChild
[Avatar]

Membro desde: 21/04/2009 11:08:33
Mensagens: 120
Offline

boa tarde!

Possuo um form com dois combos:
1 - Grupo
2 - Operadores

Quando seleciono o combo grupos ele traz o combo operadores preenchido dando um submit através de uma função javascript, no entanto o campo grupo não mantém a opção escolhida.
Segue meu código:

novo.jsp


Classe GerenteController



Obs: Qnd dou o submit na página ele chama o método @Post "novo" mas parece que não executa o método carregaListaGrupo(); ....

Obrigado
Abs

This message was edited 2 times. Last update was at 16/01/2012 07:04:16

Rafael Guerreiro
JavaEvangelist

Membro desde: 26/10/2010 07:28:13
Mensagens: 482
Localização: São Paulo/SP
Online

Ainda não consegui entender por que o método carregaListaGrupo retorna uma List, acho que nesse caso ele funciona bem sendo void.

Você debugou e ele não entra no método? Ou o result não coloca a list na variável? Ou a lista está vindo vazia?





salmaox
JavaChild
[Avatar]

Membro desde: 21/04/2009 11:08:33
Mensagens: 120
Offline

Rafael,

Ele tem q retornar uma lista pra preecher o combo na view e de fato ele preeche. Mas ele não entra nesse IF



E dessa forma o combo não mantém o grupo selecionado ao listar o combo dos operadores. É como se o "operador.grupo.idgrupo" não estivesse retornando nada...

This message was edited 1 time. Last update was at 11/01/2012 12:01:09

Rafael Guerreiro
JavaEvangelist

Membro desde: 26/10/2010 07:28:13
Mensagens: 482
Localização: São Paulo/SP
Online

Ele já está populando a lista na view quando vc dá o result.include("lista_grupo",lista_grupo); dentro do método, não há necessidade de retornar a lista o método pode ser void.

Se ele não entra no IF é porque ele não passou no teste

Esse é o problema da JSP, não da para debugar, faz assim:


Acho que dessa forma você consegue descobrir o que está acontecendo.

Uma perguntinha, qual a finalidade desse IF??





salmaox
JavaChild
[Avatar]

Membro desde: 21/04/2009 11:08:33
Mensagens: 120
Offline

Você tem razão Rafael, não precisa mesmo do método ser List já que o result envia pra view...Alterei o método pra void, obrigado. A idéia do IF é comparar os elementos da lista(combo do grupo) com o valor do combo(grupo) na hora do refresh da página.

Por exemplo: qnd eu selecionar um grupo no combo ele dá um submit, faz uma consulta no banco e traz no combo de baixo, todos os operadores referentes àquele grupo.

Estou com um probleminha no minha string sql se puder me ajudar....Acho q isso resolveria meu problema.



ele dá o seguinte erro:

org.hibernate.hql.ast.QuerySyntaxException: unexpected token: FROM near line 1, column 8 [select FROM br.org.cemaden.bean.Operador o INNER JOIN Grupo g ON (o.id_grupo = g.id_grupo) where o.id_grupo = 2]

Obrigado
Rafael Guerreiro
JavaEvangelist

Membro desde: 26/10/2010 07:28:13
Mensagens: 482
Localização: São Paulo/SP
Online

Por que você não trabalha com Criteria? Acho bem mais fácil e não dá erro de sintaxe SQL.

Acho que ao invés de trazer a lista TODA e verificar se o item faz parte do grupo, vc deveria receber o grupo no submit e trazer somente a lista daquele grupo.
Assim a requisição ao banco de dados e a hora de popular a tela ficam mais rápidos.

Me mostra como estão as classes Operador e Grupo.





salmaox
JavaChild
[Avatar]

Membro desde: 21/04/2009 11:08:33
Mensagens: 120
Offline

Rafael, desculpe a demora na resposta. Precisei me ausentar do trabalho...

Eu tentei com o Criteria, mas apanhei tanto que desisti...

segue minhas classes modelo e DAO com o criteria...









Obrigado

This message was edited 1 time. Last update was at 13/01/2012 07:14:43

Rafael Guerreiro
JavaEvangelist

Membro desde: 26/10/2010 07:28:13
Mensagens: 482
Localização: São Paulo/SP
Online

Me responde só uma dúvida: é o Gerente que TEM um Operador e um Operador que TEM um grupo?

Com o Criteria fica simples, lembrando que você não precisa fazer Join Column pq o Hibernate ja vai fazer para vc.

Ve se não seria isso:






salmaox
JavaChild
[Avatar]

Membro desde: 21/04/2009 11:08:33
Mensagens: 120
Offline

Isso mesmo, e na tabela gerente tem uma chave estrangeira de idoperador,idgrupo

CREATE TABLE "public"."grupo" (
"id_grupo" INTEGER NOT NULL,
"nome" VARCHAR(60),
CONSTRAINT "grupo_pkey" PRIMARY KEY("id_grupo")
) WITHOUT OIDS;

CREATE TABLE "public"."operador" (
"id_operador" INTEGER NOT NULL,
"celular" VARCHAR(14),
"email" VARCHAR(60),
"nome" VARCHAR(60),
"ramal" VARCHAR(4),
"telefone" VARCHAR(14),
"id_grupo" INTEGER,
CONSTRAINT "operador_pkey" PRIMARY KEY("id_operador"),
CONSTRAINT "fke229ec94eb9d8aef" FOREIGN KEY ("id_grupo")
REFERENCES "public"."grupo"("id_grupo")
ON DELETE NO ACTION
ON UPDATE NO ACTION
NOT DEFERRABLE
) WITHOUT OIDS;

CREATE TABLE "public"."gerente" (
"id_gerente" INTEGER NOT NULL,
"senha" VARCHAR(255),
"id_grupo" INTEGER,
"id_operador" INTEGER,
CONSTRAINT "gerente_pkey" PRIMARY KEY("id_gerente"),
CONSTRAINT "fk5ea9f20e467855eb" FOREIGN KEY ("id_operador")
REFERENCES "public"."operador"("id_operador")
ON DELETE NO ACTION
ON UPDATE NO ACTION
NOT DEFERRABLE,
CONSTRAINT "fk5ea9f20eeb9d8aef" FOREIGN KEY ("id_grupo")
REFERENCES "public"."grupo"("id_grupo")
ON DELETE NO ACTION
ON UPDATE NO ACTION
NOT DEFERRABLE
) WITHOUT OIDS;


Esse criteria eu ja tentei antes...tentei novamente mas dá esse erro: org.hibernate.QueryException: could not resolve property: idgrupo of: br.org.cemaden.bean.Operador


salmaox
JavaChild
[Avatar]

Membro desde: 21/04/2009 11:08:33
Mensagens: 120
Offline

Rafael,

Tentei dessa forma tb



mas tá dando essa exception: org.hibernate.PropertyAccessException: could not get a field value by reflection getter of br.org.cemaden.bean.Grupo.idgrupo

Rafael Guerreiro
JavaEvangelist

Membro desde: 26/10/2010 07:28:13
Mensagens: 482
Localização: São Paulo/SP
Online

Esse erro é por que o parametro da propriedade está com nome errado.

Por que você não segue o padrão java de camelCase?

Ve se assim resolve (eu tinha errado o nome das variáveis e coloquei um Alias):





salmaox
JavaChild
[Avatar]

Membro desde: 21/04/2009 11:08:33
Mensagens: 120
Offline

agora deu certo mas ele não entra nesse primeiro IF e não mantém a opção selecionada, eu preciso que ele mantenha o combo selecionado para fazer o cadastro do gerente...


Rafael Guerreiro
JavaEvangelist

Membro desde: 26/10/2010 07:28:13
Mensagens: 482
Localização: São Paulo/SP
Online

Você fez o teste vendo quais valores ele mostra?

Assim acho que fica mais fácil de você encontrar o erro.






salmaox
JavaChild
[Avatar]

Membro desde: 21/04/2009 11:08:33
Mensagens: 120
Offline

variável ${operador.grupo.idgrupo} traz qnd dá o submit pelo combo na primeira vez...senão nem carregava o método listaOperadorPorGrupo onde é passado o idgrupo por parâmetro. Só que após esse submit ela parece que fica null...

This message was edited 4 times. Last update was at 13/01/2012 14:02:07

Rafael Guerreiro
JavaEvangelist

Membro desde: 26/10/2010 07:28:13
Mensagens: 482
Localização: São Paulo/SP
Online

Então, quando você executar o método listaOperadorPorGrupo você deve dar um result.include e incluir a variável de novo. Essa variável só é incluida automaticamente quando ela for SessionScoped, mas ai ela será incluida em TODAS as requisições (mesmo as que não tiverem nada a ver).





 
Índice dos Fóruns » Frameworks e Bibliotecas brasileiros
Ir para:   
Powered by JForum 2.1.8 © JForum Team