| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/01/2012 11:36:32
|
salmaox
JavaChild
![[Avatar]](/images/avatar/70370fb7bbcf61a2da316dfdc1d42443.jpg)
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
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/01/2012 11:41:22
|
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?
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/01/2012 12:00:09
|
salmaox
JavaChild
![[Avatar]](/images/avatar/70370fb7bbcf61a2da316dfdc1d42443.jpg)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/01/2012 13:37:27
|
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??
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/01/2012 14:39:43
|
salmaox
JavaChild
![[Avatar]](/images/avatar/70370fb7bbcf61a2da316dfdc1d42443.jpg)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/01/2012 15:17:59
|
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.
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/01/2012 07:04:01
|
salmaox
JavaChild
![[Avatar]](/images/avatar/70370fb7bbcf61a2da316dfdc1d42443.jpg)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/01/2012 11:01:42
|
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:
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/01/2012 11:36:53
|
salmaox
JavaChild
![[Avatar]](/images/avatar/70370fb7bbcf61a2da316dfdc1d42443.jpg)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/01/2012 12:55:48
|
salmaox
JavaChild
![[Avatar]](/images/avatar/70370fb7bbcf61a2da316dfdc1d42443.jpg)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/01/2012 12:59:25
|
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):
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/01/2012 13:18:45
|
salmaox
JavaChild
![[Avatar]](/images/avatar/70370fb7bbcf61a2da316dfdc1d42443.jpg)
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...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/01/2012 13:27:05
|
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.
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/01/2012 13:34:52
|
salmaox
JavaChild
![[Avatar]](/images/avatar/70370fb7bbcf61a2da316dfdc1d42443.jpg)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/01/2012 14:10:58
|
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).
|
|
|
|
 |
|
|