O interessante é que imprime a quantidade certa de registro, porem as descrições são repetidas.
J
jyoshiriro
Olá,
Bem, o o “foreach” leva em consideração se um objeto é diferente do outro pelo método “equals”. Logo, deve ter alguma coisa que difere teus objetos sem que você queira. O que tem nessa coleção “posicaoList”?
J
jyoshiriro
Agora que vi teu outro post.
Nesse caso o JSTL pode estar se confundindo pelo nome de sua variável.
Existe algum atributo de requisição chamado “posicoes”?
M
Mandy
posicoes não, mas poderia ser em outro lugar?
J
jyoshiriro
Então o problema deve estar em como você alimenta essa coleção. Poderia mandar o código onde você faz isso?
Não dsei se você vai entender, mas o processo é esse.
J
jyoshiriro
Ah, e uma dica:
Não precisa criar uma variável e por em escopo de sessão para fazer a contagem do item atual.
Mude a tag forEach para:
<c:forEach var="posicoes" items="${posicaoList}" varStatus="st">
E para saber a contagem atual: ${st.index}
E para saber a contagem total: ${st.count}
J
jyoshiriro
Rode sua aplicação em modo debug e verifique como a consulta está retornando do banco. Porque parece-me tudo ok.
M
Mandy
rsrsrsrrss… Pra mim tb parece estar ok!!! Já quebrei a cabeça aqui.
J
jyoshiriro
Então. Na minha opinião o erro só pode estar na consulta. Acho que o JSTL está exibindo o que veio mesmo de suas consulta com Hibernate. Então verifique se sua consulta traz o que você acha que ela traz, entendeu? Bem, eu faria isso
E eu rodei essa sql no banco e retornou os dados certinhos.
J
jyoshiriro
Amigo, desculpe a insistência, mas rode em modo debug e veja como sua coleção fica. Não confie 100% nesse tradutor SQL do Hibernate…
O JSTL não pode estar errando numa coleção tão simples.
Ainda no JSP, faça um teste assim: ao inves de “posicoes”, chame sua variável de iteração apenas de “p” e veja se muda alguma coisa.
M
Mandy
mudei para p e continua a mesma coisa. ai meu Deus.
J
jyoshiriro
Insisto: depura que você vai achar o erro…
Bota um breakpoint logo após essa linha:
request.setAttribute("posicaoList", externalFacade.listarPosicao(posicao, pagina));
e manda executar o seguinte código (watch) :
request.getAttribute("posicaoList")
Na Coleção que vai aparecer, vá na navegando em seu conteúdo e veja se ele está ok.
M
Mandy
O que eu olho nele no getAtribute?
Eu dei um “syso” e retorna a lista, porem não dá pra ver o que tem nela.
M
Mandy
Bom eu tô saindo agora, mas amanhã eu continuo olhando isso… Se você puder me ajudar eu vou ficar muito feliz… rsrsrsr
Obrigada!
J
jyoshiriro
Amigo, isso se fazer “syso” é uma tremenda POG… Use o modo debug e fique 100000000000000000000000000000 de passos a frente de quem usa “syso” pra depurar erros no código.
J
jyoshiriro
Se quiser, te ensino a usar o modo debug no netbeans e no eclipse (imagino que você use um desses 2, né?)
M
Mandy
No modo debug na variavel request/atributes eu tenho isso a list.
Como faço para ver o conteúdo?
M
Mandy
Muito bem, eu consegui ver no modo debug, realmente os itens do banco não estão vindo corretamente.
Agora tô mais enrolada ainda.
o que eu faço??? rsrsrsrsr
J
jyoshiriro
Calma… agora é você criar uma classe com Main ou uma classe de teste unitário para ir testando e reescrevendo essa sua consulta pelo Hibernate até que retorne a tupla que você quer. É bem mais rápido do que ficar levantando sua aplicação WEB para testar isso.
M
Mandy
Consegui resolver esse problema.
Apesar da query funcionar quando rodo ela no banco, no hibernate é necessário agrupar.
Então acrescentei o Projections.groupProperty na Criteria.