Não consigo mostrar meus dados no jsp [Resolvido]

Olá pessoal,

por alguma razão não consigo de forma alguma mostrar meus dados no JSP. Tenho um bean Grupos e uma classe GruposService, onde tenho a funcao abaixo:

     public List getGruposList() {
         Session session = ConnectionFactory.getInstance().getSession();
         
         try {
             Query query =
                     session.createQuery(
                     "select gp.grupo, gp.descricao from auge.bean.Grupos gp order by gp.descricao");
             return query.list();
             
         } catch (HibernateException e) {
             System.err.println("Hibernate Exception" + e.getMessage());
             throw new RuntimeException(e);
         } finally {
             if (session != null) {
                 try {
                     session.close();
                 } catch (HibernateException e) {
                     System.err.println("Hibernate Exception" + e.getMessage());
                     throw new RuntimeException(e);
                 }
                 
             }
         }
     }

Como podem ver, ela me retorna uma List dos grupos. Tentei mostrar isso na tela de duas formas: a primeira foi usando o logic:iterate do struts, e a segunda, o c:forEach do JSTL. Ambas deram problema e pareciam corretas, o que me faz pensar que o problema seja em algum outro local. Gostaria que vcs me ajudassem a descobrir onde.

No primeiro caso, usando o logic:iterate, tenho o JSP da seguinte maneira:

 <%@ taglib uri="/tags/struts-bean" prefix="bean" %>
 <%@ taglib uri="/tags/struts-html" prefix="html" %>
 <%@ taglib uri="/tags/struts-logic" prefix="logic" %>
 <%@ page import="auge.conexao.GruposService" %>
 <%@ page import="java.util.List" %>
 
 <html:html locale="true">
 <head>
    <title>Listagem de Grupos</title>
    <html:base/>
 </head>
 <body bgcolor="white">
 
 
    <html:errors/>
    <%
       List gruposList = GruposService.getInstance().getGruposList();
       request.setAttribute("grupos", gruposList);
    %>
 
    <table border=1>
    <tr>
       <td>Grupo</td> 
       <td>Descrição</td>	
    </tr>
    <logic:iterate id="element" name="grupos"  type="auge.bean.Grupos" >
    <tr>
       <td><bean:write name="element" property="grupo" /></td>    
       <td><bean:write name="element" property="descricao" /></td>	
    </tr>
    </logic:iterate>
    </table>
 <p>
 <html:link action="/Grupos.do">Voltar</html:link>
 </body>
 </html:html>

O erro que recebo é o seguinte:

 javax.servlet.jsp.JspException: Cannot find bean element in any scope
         at org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:934)
         at org.apache.struts.taglib.bean.WriteTag.doStartTag(WriteTag.java:225)
         at org.apache.jsp.pages.gruposLista_jsp._jspx_meth_bean_write_0(gruposLista_jsp.java:229)
         at org.apache.jsp.pages.gruposLista_jsp._jspService(gruposLista_jsp.java:140)
         at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
         at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
         at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
         at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
         at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:825)
         at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:738)
         at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:526)
         at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
         at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
         at java.lang.Thread.run(Thread.java:534)

No segundo caso, meu JSP ficou da seguinte maneira:

<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page import="auge.conexao.GruposService" %>
<%@ page import="java.util.List" %>

<html:html locale="true">
<head>
    <title>Listagem de Grupos</title>
    <html:base/>
</head>
<body bgcolor="white">


    <html:errors/>
    <%
       List gruposList = GruposService.getInstance().getGruposList();
       request.setAttribute("gruposLista", gruposList);
    %>

    <table border=1>
   
    <tr>
       <td>Grupo</td>
       <td>Descrição</td>   
    </tr>
    <c:forEach var="grupos" items="${gruposLista}">
    <tr>
       <td><c: out value="${grupos.grupo}" /></td>
       <td><c: out value="${grupos.descricao}" /></td>           
    </tr>   
    </c:forEach>

   
    </table>   
<p>
<html:link action="/Grupos.do">Voltar</html:link>
</body>
</html:html>

Nesta nova situação, recebo o seguinte erro:

javax.servlet.jsp.el.ELException: The "." operator was supplied with an index value of type "java.lang.String" to be applied to a List or array, but that value cannot be converted to an integer.
        at org.apache.commons.el.Logger.logError(Logger.java:481)
        at org.apache.commons.el.Logger.logError(Logger.java:498)
        at org.apache.commons.el.Logger.logError(Logger.java:566)
        at org.apache.commons.el.ArraySuffix.evaluate(ArraySuffix.java:227)
        at org.apache.commons.el.ComplexValue.evaluate(ComplexValue.java:145)
        at org.apache.commons.el.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:263)
        at org.apache.commons.el.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:190)
        at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:920)
        at org.apache.jsp.pages.gruposLista_jsp._jspx_meth_c_out_0(gruposLista_jsp.java:237)
        at org.apache.jsp.pages.gruposLista_jsp._jspx_meth_c_forEach_0(gruposLista_jsp.java:206)
        at org.apache.jsp.pages.gruposLista_jsp._jspService(gruposLista_jsp.java:123)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:825)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:738)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:526)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:534)

Parecem dois erros diferentes, mas já pesquisei em vários lugares e aparentemente a forma que estou fazendo está correta, então penso que TALVEZ eles tenham a mesma causa. Se forem duas barbeiragens, por favor me desculpem.

Os dados estão retornando corretamente: olho no log do hibernate e consigo ver que ele retorna 27 rows. Inclusive, se usando c:forEach eu fizer um varStatus=“status” e depois pedir status.count, ele me retorna corretamente até o numero 27. Ou seja, meus dados tão chegando lá, só que tem algo emperrando na hora de mostrar.

Agradeço qualquer ajuda. Se for necessária mais informação, só dizer.

Valeu

pq vc colocou isto na tua jsp?

 <%
        List gruposList = GruposService.getInstance().getGruposList();
        request.setAttribute("grupos", gruposList);
  %>

NUNCA!!!
Nunca coloque scriplet na tua jsp.

Vc deve fazer assim:

Crie um action e coloque este pedaço de codigo nela e redirecione pra tua jsp.

Um exemplo…

public ActionForward execute(ActionMapping map, ActionForm form, HttpServletRequest req, HttpServletResponse res) throws Exception {
		List lista = new GruposService.getGruposList();
		req.setAttribute("grupos", lista);
	return map.findForward("ok");

Aí da certo…

Tem um espaço esquisito entre o “<c” e o “:out…” dentro do forEach, tire o espaço.

Outra coisa, porque em vez de usar ><c:out/> você não simplesmente coloca ${item.propriedade}?

Marcelo,

:shock: Desculpe
Na verdade eu coloquei só pra testar, pretendia mudar depois… pq era pra ter funcionado daquele jeito, não era? De qualquer forma, acabei de efetuar a mudança.

Criei uma ação de nome ListaGruposAction.java da seguinte forma:

public class ListaGruposAction extends Action {
	public ActionForward execute (
		ActionMapping mapping,
		ActionForm form,
		HttpServletRequest request,
		HttpServletResponse response) throws Exception {
            
                List lista = GruposService.getInstance().getGruposList();
 		request.setAttribute("grupos", lista);
                return mapping.findForward("ok");
	}       
    
}

E do meu jsp tirei o scriplet feio :oops: e ficou assim:

 <%@ taglib uri="/tags/struts-bean" prefix="bean" %>
 <%@ taglib uri="/tags/struts-html" prefix="html" %>
 <%@ taglib uri="/tags/struts-logic" prefix="logic" %>
 <%@ page import="auge.conexao.GruposService" %>
 <%@ page import="java.util.List" %>
 
 <html:html locale="true">
 <head>
    <title>Listagem de Grupos</title>
    <html:base/>
 </head>
 <body bgcolor="white">
 
    <html:errors/>
 
    <table border=1>
    <tr>
       <td>Grupo</td> 
       <td>Descrição</td>	
    </tr>
     <logic:iterate id="element" name="grupos"  scope="request" type="auge.bean.Grupos" >
     <tr>
        <td><bean:write name="element" property="grupo" /></td>    
        <td><bean:write name="element" property="descricao" /></td>	
     </tr>
     </logic:iterate>    

    </table>   
 <p>
 <html:link action="/Grupos.do">Voltar</html:link>
 </body>
 </html:html>

O erro mudou! (erro mudar eu sempre acho lucro… hehe…) agora recebo:

javax.servlet.ServletException: Cannot find bean grupos in scope request
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
	org.apache.jsp.pages.gruposLista_jsp._jspService(gruposLista_jsp.java:179)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
	org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1063)
	org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
	org.apache.struts.action.RequestProcessor.internalModuleRelativeForward(RequestProcessor.java:1001)
	org.apache.struts.tiles.TilesRequestProcessor.internalModuleRelativeForward(TilesRequestProcessor.java:345)
	org.apache.struts.action.RequestProcessor.processForward(RequestProcessor.java:560)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:209)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362

Imagino que este erro seja pq preciso “pegar” o parametro que setei. Tentei fazer um getAttribute, mas deu na mesma. Mas o scope=“request”… basta pra isso?

Maurício, o espaço entre o c e o :out acabou saindo pq me confundi de fórum… hehehe… em outro fórum, isso dá um smileyzinho e eu não queria que ele aparecesse, então coloquei. Na verdade o espaço não está lá não, foi só pra postar. Quanto a colocar só o ${item.propriedade}… acabei de tentar aqui e deu exatamente a mesma coisa do c:out. O engraçado é que se eu mudar um pouco mais (em se tratando dessa solução usando JSTL) e fizer algo tipo:

     <c:forEach var="descricao" items="${gruposLista}">
     <tr>
        <td><c:out value="${descricao}" /></td>           
     </tr>   
     </c:forEach>

Ele me dá tipo o endereço do Objeto… algo tipo Llang.java.Object@blablabla… e me dá isso 27 vezes (o número de rows hehe)

Muito obrigada pela ajuda e atenção de vcs.

Oxe, se ele tá dando essa coisa doida (que é o toString() de Object) é porque ele tá pegando tudo certinho.

Será que os nomes das propriedades que você declarou estão corretas?

Coloca um <c:out/> aí com ${descricao.class} pra ver o que ele tá trazendo.

E mais uma coisa, não use <c:out/> é feio que dói :mrgreen:

tente assim

<c:forEach var="id" items="${grupos}">
      <tr>
         <td>${id.grupo}</td>           
         <td>${id.descricao}</td>           
      </tr>   
</c:forEach>

vc colocou a chave grupos para a lista no seu request.
para isto, vc tem q pegar grupos em items e naum gruposLista

Eita, eu sabia que o scriplet era do mal, mas do c:out eu não sabia não… Curiosidade, pq não ele? De qualquer forma, c:out está fora da minha vida agora :mrgreen:

Pedindo o descricao.class, ele me dá uma exceção por causa do pontinho:

exception

javax.servlet.ServletException: The "." operator was supplied with an index value of type "java.lang.String" to be applied to a List or array, but that value cannot be converted to an integer.
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
	org.apache.jsp.pages.gruposLista_jsp._jspService(gruposLista_jsp.java:148)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)

root cause

javax.servlet.jsp.el.ELException: The "." operator was supplied with an index value of type "java.lang.String" to be applied to a List or array, but that value cannot be converted to an integer.
	org.apache.commons.el.Logger.logError(Logger.java:481)
	org.apache.commons.el.Logger.logError(Logger.java:498)
	org.apache.commons.el.Logger.logError(Logger.java:566)
	org.apache.commons.el.ArraySuffix.evaluate(ArraySuffix.java:227)
	org.apache.commons.el.ComplexValue.evaluate(ComplexValue.java:145)
	org.apache.commons.el.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:263)
	org.apache.commons.el.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:190)
	org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:920)
	org.apache.jsp.pages.gruposLista_jsp._jspx_meth_c_out_1(gruposLista_jsp.java:254)
	org.apache.jsp.pages.gruposLista_jsp._jspx_meth_c_forEach_0(gruposLista_jsp.java:207)
	org.apache.jsp.pages.gruposLista_jsp._jspService(gruposLista_jsp.java:122)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)

Ehhhh… ele não gosta do pontinho.

Não é que seja do mal, é desnecessário.

Mas a coisa tá preta mesmo viu, num sai nada daí!

Funcionou?

Marcelo, desculpe não ter te respondido ontem, é que aqui qdo termina o expediente o povo te põe pra fora a pontapés :mrgreen:

O jeito que vc falou deu o mesmo erro do pontinho:

exception

javax.servlet.ServletException: The "." operator was supplied with an index value of type "java.lang.String" to be applied to a List or array, but that value cannot be converted to an integer.
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
	org.apache.jsp.pages.gruposLista_jsp._jspService(gruposLista_jsp.java:145)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)

root cause

javax.servlet.jsp.el.ELException: The "." operator was supplied with an index value of type "java.lang.String" to be applied to a List or array, but that value cannot be converted to an integer.
	org.apache.commons.el.Logger.logError(Logger.java:481)
	org.apache.commons.el.Logger.logError(Logger.java:498)
	org.apache.commons.el.Logger.logError(Logger.java:566)
	org.apache.commons.el.ArraySuffix.evaluate(ArraySuffix.java:227)
	org.apache.commons.el.ComplexValue.evaluate(ComplexValue.java:145)
	org.apache.commons.el.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:263)
	org.apache.commons.el.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:190)
	org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:920)
	org.apache.jsp.pages.gruposLista_jsp._jspx_meth_c_forEach_0(gruposLista_jsp.java:200)
	org.apache.jsp.pages.gruposLista_jsp._jspService(gruposLista_jsp.java:120)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)

Tá dizendo que o valor nao pode ser convertido pra inteiro… mas pra que ele quer converter pra inteiro?

muito estranho…

faz assim, posta todo seu codigo aí… (action, form, modelo, struts-config) pra gente dar uma olhada…

Muito estranho mesmo…

Tou ajeitando aqui pra postar… mas vem cá, o tipo do List devia me mostrar o que? pq eu tou supondo que seja um list de objetos Grupos, mas qdo eu faço:

Object obj = gruposList.get(0);
        out.println("GruposList:" + obj.getClass());

Ele me retorna: Ljava.lang.Object

E qdo eu peço o valor de obj (usando esse teste que fiz acima) ele retorna Ljava.lang.Object;@191f022

será q é o tipo de objeto q tá errado?

Totalmente!

Será que o erro não é na query do Hibernate? Você tem alguma classe use mapeamento de herança?

Kkkkkkkkkkkkkkkkk!

Ponto, achei o erro, você colocou um select na query do Hibernate!

Tira ele de lá, deixa só a partir do From.

E mais uma coisa, essa query deveria ser uma named query, definida lá no seu arquivo de mapeamento, já que ela é estática. Ela vai rodar bem mais rápido.

:oops: :oops: Hum, eu tinha entendido errado então. Tinha entendido que o Select pro Hibernate seria algo meio que opcional, parece que já vi alguns exemplos usando. Mas de qualquer forma, alterei pra:

            Query query =
                    session.createQuery(
                    "from auge.bean.Grupos gp order by gp.descricao");
            return query.list();

Agora sim, fez diferença. Mas ainda não mostrou os dados (nem com evil c:out nem sem ele)… eles estão vindo em branco hehe. Olho o código fonte da página gerada e vejo que a tabela vem com 27 linhas em branco!

Bom, parece que a metade do problema está resolvido, vou ver se acho algo aqui que possa dizer pq os dados estão vindo em branco, mesmo qdo ele consegue contar qtas linhas tem hehe…

Faz um scriptlet que pegue e escreva os valores.

Fiz um scriplet assim:

     <%
        List gruposList = GruposService.getInstance().getGruposList();
        request.setAttribute("gruposLista", gruposList);
        Iterator iterator = gruposList.iterator();        
        while (iterator.hasNext()) {
            Object elem = iterator.next();
            if (elem == null)
                 elem = "";
        %>
        <br> <%= elem %> 
<%
    }
%>     

E ele me escreveu 27 tags
no código fonte da página gerada… hehehhehe…

Tenta dar um getClass() nesses objetos pra ver são mesmo os objetos Grupo.

Estou tentando fazer isso a alguns minutos, mas até nisso dá problema. Te contar viu. O mesmo código de getClass que funcionava anteriormente (e até postei os resultados aqui) não funciona agora. Dá uma exceção:

exception

org.apache.jasper.JasperException
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)

root cause

java.lang.NullPointerException
	org.apache.jsp.pages.gruposLista_jsp._jspService(gruposLista_jsp.java:113)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)

E no arquivo Java gerado para o JSP, na linha 113 (q ele indica no erro) tenho exatamente isso:

out.println("Groups list has objects of type " + obj.getClass());

E tava olhando aqui… no log do hibernate, a consulta mostra o seguinte:

2005-08-09 11:04:43,883 DEBUG hibernate.jdbc.AbstractBatcher  -> about to open ResultSet (open ResultSets: 0, globally: 0)
2005-08-09 11:04:43,886 DEBUG hibernate.loader.Loader  -> processing result set
2005-08-09 11:04:43,888 DEBUG hibernate.loader.Loader  -> result set row: 0
2005-08-09 11:04:43,889 DEBUG hibernate.type.IntegerType  -> returning null as column: grupo
2005-08-09 11:04:43,889 DEBUG hibernate.loader.Loader  -> result row: null
2005-08-09 11:04:43,890 DEBUG hibernate.loader.Loader  -> result set row: 1
2005-08-09 11:04:43,890 DEBUG hibernate.type.IntegerType  -> returning null as column: grupo
2005-08-09 11:04:43,890 DEBUG hibernate.loader.Loader  -> result row: null
2005-08-09 11:04:43,890 DEBUG hibernate.loader.Loader  -> result set row: 2
2005-08-09 11:04:43,890 DEBUG hibernate.type.IntegerType  -> returning null as column: grupo
2005-08-09 11:04:43,890 DEBUG hibernate.loader.Loader  -> result row: null
2005-08-09 11:04:43,890 DEBUG hibernate.loader.Loader  -> result set row: 3
2005-08-09 11:04:43,890 DEBUG hibernate.type.IntegerType  -> returning null as column: grupo
2005-08-09 11:04:43,891 DEBUG hibernate.loader.Loader  -> result row: null
2005-08-09 11:04:43,891 DEBUG hibernate.loader.Loader  -> result set row: 4
2005-08-09 11:04:43,891 DEBUG hibernate.type.IntegerType  -> returning null as column: grupo
2005-08-09 11:04:43,891 DEBUG hibernate.loader.Loader  -> result row: null
2005-08-09 11:04:43,891 DEBUG hibernate.loader.Loader  -> result set row: 5
2005-08-09 11:04:43,891 DEBUG hibernate.type.IntegerType  -> returning null as column: grupo
2005-08-09 11:04:43,891 DEBUG hibernate.loader.Loader  -> result row: null
2005-08-09 11:04:43,891 DEBUG hibernate.loader.Loader  -> result set row: 6
2005-08-09 11:04:43,891 DEBUG hibernate.type.IntegerType  -> returning null as column: grupo
2005-08-09 11:04:43,891 DEBUG hibernate.loader.Loader  -> result row: null
2005-08-09 11:04:43,891 DEBUG hibernate.loader.Loader  -> result set row: 7
2005-08-09 11:04:43,891 DEBUG hibernate.type.IntegerType  -> returning null as column: grupo
2005-08-09 11:04:43,892 DEBUG hibernate.loader.Loader  -> result row: null
2005-08-09 11:04:43,892 DEBUG hibernate.loader.Loader  -> result set row: 8
2005-08-09 11:04:43,892 DEBUG hibernate.type.IntegerType  -> returning null as column: grupo
2005-08-09 11:04:43,892 DEBUG hibernate.loader.Loader  -> result row: null
2005-08-09 11:04:43,892 DEBUG hibernate.loader.Loader  -> result set row: 9
2005-08-09 11:04:43,892 DEBUG hibernate.type.IntegerType  -> returning null as column: grupo
2005-08-09 11:04:43,892 DEBUG hibernate.loader.Loader  -> result row: null
2005-08-09 11:04:43,892 DEBUG hibernate.loader.Loader  -> result set row: 10
2005-08-09 11:04:43,892 DEBUG hibernate.type.IntegerType  -> returning null as column: grupo
2005-08-09 11:04:43,892 DEBUG hibernate.loader.Loader  -> result row: null
2005-08-09 11:04:43,892 DEBUG hibernate.loader.Loader  -> result set row: 11
2005-08-09 11:04:43,892 DEBUG hibernate.type.IntegerType  -> returning null as column: grupo
2005-08-09 11:04:43,892 DEBUG hibernate.loader.Loader  -> result row: null
2005-08-09 11:04:43,892 DEBUG hibernate.loader.Loader  -> result set row: 12
2005-08-09 11:04:43,893 DEBUG hibernate.type.IntegerType  -> returning null as column: grupo
2005-08-09 11:04:43,893 DEBUG hibernate.loader.Loader  -> result row: null
2005-08-09 11:04:43,893 DEBUG hibernate.loader.Loader  -> result set row: 13
2005-08-09 11:04:43,893 DEBUG hibernate.type.IntegerType  -> returning null as column: grupo
2005-08-09 11:04:43,893 DEBUG hibernate.loader.Loader  -> result row: null
2005-08-09 11:04:43,893 DEBUG hibernate.loader.Loader  -> result set row: 14
2005-08-09 11:04:43,895 DEBUG hibernate.type.IntegerType  -> returning null as column: grupo
2005-08-09 11:04:43,895 DEBUG hibernate.loader.Loader  -> result row: null
2005-08-09 11:04:43,895 DEBUG hibernate.loader.Loader  -> result set row: 15
2005-08-09 11:04:43,895 DEBUG hibernate.type.IntegerType  -> returning null as column: grupo
2005-08-09 11:04:43,895 DEBUG hibernate.loader.Loader  -> result row: null
2005-08-09 11:04:43,895 DEBUG hibernate.loader.Loader  -> result set row: 16
2005-08-09 11:04:43,896 DEBUG hibernate.type.IntegerType  -> returning null as column: grupo
2005-08-09 11:04:43,896 DEBUG hibernate.loader.Loader  -> result row: null
2005-08-09 11:04:43,896 DEBUG hibernate.loader.Loader  -> result set row: 17
2005-08-09 11:04:43,896 DEBUG hibernate.type.IntegerType  -> returning null as column: grupo
2005-08-09 11:04:43,896 DEBUG hibernate.loader.Loader  -> result row: null
2005-08-09 11:04:43,896 DEBUG hibernate.loader.Loader  -> result set row: 18
2005-08-09 11:04:43,896 DEBUG hibernate.type.IntegerType  -> returning null as column: grupo
2005-08-09 11:04:43,896 DEBUG hibernate.loader.Loader  -> result row: null
2005-08-09 11:04:43,896 DEBUG hibernate.loader.Loader  -> result set row: 19
2005-08-09 11:04:43,896 DEBUG hibernate.type.IntegerType  -> returning null as column: grupo
2005-08-09 11:04:43,896 DEBUG hibernate.loader.Loader  -> result row: null
2005-08-09 11:04:43,896 DEBUG hibernate.loader.Loader  -> result set row: 20
2005-08-09 11:04:43,896 DEBUG hibernate.type.IntegerType  -> returning null as column: grupo
2005-08-09 11:04:43,896 DEBUG hibernate.loader.Loader  -> result row: null
2005-08-09 11:04:43,897 DEBUG hibernate.loader.Loader  -> result set row: 21
2005-08-09 11:04:43,897 DEBUG hibernate.type.IntegerType  -> returning null as column: grupo
2005-08-09 11:04:43,897 DEBUG hibernate.loader.Loader  -> result row: null
2005-08-09 11:04:43,897 DEBUG hibernate.loader.Loader  -> result set row: 22
2005-08-09 11:04:43,897 DEBUG hibernate.type.IntegerType  -> returning null as column: grupo
2005-08-09 11:04:43,897 DEBUG hibernate.loader.Loader  -> result row: null
2005-08-09 11:04:43,897 DEBUG hibernate.loader.Loader  -> result set row: 23
2005-08-09 11:04:43,897 DEBUG hibernate.type.IntegerType  -> returning null as column: grupo
2005-08-09 11:04:43,897 DEBUG hibernate.loader.Loader  -> result row: null
2005-08-09 11:04:43,897 DEBUG hibernate.loader.Loader  -> result set row: 24
2005-08-09 11:04:43,897 DEBUG hibernate.type.IntegerType  -> returning null as column: grupo
2005-08-09 11:04:43,897 DEBUG hibernate.loader.Loader  -> result row: null
2005-08-09 11:04:43,897 DEBUG hibernate.loader.Loader  -> result set row: 25
2005-08-09 11:04:43,898 DEBUG hibernate.type.IntegerType  -> returning null as column: grupo
2005-08-09 11:04:43,898 DEBUG hibernate.loader.Loader  -> result row: null
2005-08-09 11:04:43,898 DEBUG hibernate.loader.Loader  -> result set row: 26
2005-08-09 11:04:43,898 DEBUG hibernate.type.IntegerType  -> returning null as column: grupo
2005-08-09 11:04:43,898 DEBUG hibernate.loader.Loader  -> result row: null
2005-08-09 11:04:43,898 DEBUG hibernate.loader.Loader  -> done processing result set (27 rows)

Ou seja, o troço tá realmente retornando null… por isso obviamente não aparece nada. É estranho, pq qdo a query tava errada (com o select lá) nesse log aparecia os troços… eu via escrito os dados de descricao do grupo e tudo mais. Achei que era pq eu tinha especificado cada coluna. Engraçado aí é que ele só cita a column grupo, e não a descrição, apesar de mais acima no log eu ter que ele mapeou ambas:

2005-08-09 11:04:28,957 INFO  hibernate.cfg.Configuration  -> Mapping resource: auge/bean/Grupos.hbm.xml
2005-08-09 11:04:28,978 DEBUG hibernate.util.DTDEntityResolver  -> trying to locate http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd in classpath under org/hibernate/
2005-08-09 11:04:28,980 DEBUG hibernate.util.DTDEntityResolver  -> found http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd in classpath
2005-08-09 11:04:29,261 INFO  hibernate.cfg.HbmBinder  -> Mapping class: auge.bean.Grupos -> GRUPOS
2005-08-09 11:04:29,281 DEBUG hibernate.cfg.HbmBinder  -> Mapped property: grupo -> grupo
2005-08-09 11:04:29,321 DEBUG hibernate.cfg.HbmBinder  -> Mapped property: descricao -> descricao

Coisa estranha, não? Com certeza tem algo errado pro lado do hibernate.