Exception estranha

5 respostas
V

Pessoal, bom dia.
Sou iniciante em Java (comecei a trabalhar em tal tecnologia à 3 semanas) e estou desenvolvendo uma aplicação com Hibernate, utilizando a especificação JPA. Tenho um JSP que pega os dados de um bean, no entanto, quando eu peço para o JSP exibir os dados que eu recuperei do bean dentro de um DataTable, acontece uma exception que eu não tenho a mínima idéia do motivo pelo qual ela foi gerada.

Aqui está o método do bean, que gera a exception:

//Método para obter todos as propostas do banco de dados

public DataModel getProClassificacoes(){

EntityManager em = getEntityManager();

try{

Query select = em.createQuery(FROM ProClassificacao);

select.setMaxResults(gettamanhoArray()); //define o número máximo de registros que serão apresentados na tela (20)

select.setFirstResult(getprimeiroRegistro()); // define a partir de qual registro da tabela, o DataTable deverá começar a mostrar (default=0)

setModel(new ListDataModel(select.getResultList()));

} catch(Exception ex){

System.err.println("Exception occurred: "+ex);

} finally{

em.close();

}

return getModel();

}

Aqui, o JSP que chama este método…
<%@page contentType=“text/html”%>
<%@page pageEncoding=“UTF-8”%>
<%@taglib uri=“http://java.sun.com/jsf/core” prefix=“f” %>
<%@taglib uri=“http://java.sun.com/jsf/html” prefix=“h” %>

Listar Proposta Classificacao

Listando Propostas Classificações



     
Voltar para a página inicial

E, por fim, a exception que o TomCat exibe…
Exception occurred: java.lang.StringIndexOutOfBoundsException: String index out of range: 0

Não consigo entender pq ele tá gerando uma “out of range”…
Ao executar este JSP, a tela aparece certinho, com todos os componententes, no entanto, o DataTable não vem com nenhuma informação.

Caso alguém possa me ajudar a solucionar este problema, ficarei mto agradecido.

Atenciosamente,
Vitor Ribeiro de Oliveira

5 Respostas

paulo.marcelo

O compilador não faz nenhuma referencia da linha do código que o erro ocorre?

F

Vou só te dar uma ajudinha...
Não vou responder teu tópico porque não tenho base para isso... mas editei, porque senão ninguém vai querer ler teu código...

Da próxima vez, cole o código entre as tags code e leia este tópico, que vai facilitar muito para que teu tópico seja respondido:
http://www.guj.com.br/posts/list/50115.java#263156

//Método para obter todos as propostas do banco de dados
    public DataModel getProClassificacoes(){
        EntityManager em = getEntityManager();
        try{
            Query select = em.createQuery("FROM ProClassificacao");            
            select.setMaxResults(gettamanhoArray()); //define o número máximo de registros que serão apresentados na tela (20)
            select.setFirstResult(getprimeiroRegistro()); // define a partir de qual registro da tabela, o DataTable deverá começar a mostrar (default=0)
            setModel(new ListDataModel(select.getResultList()));
        } catch(Exception ex){
            System.err.println("Exception occurred: "+ex);
        } finally{
            em.close();
        }
        return getModel();
    }
Aqui, o JSP que chama este método...
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title>Listar Proposta Classificacao</title>
    </head>
    <body>
        <f:view>            
            <h1>Listando Propostas Classificações</h1>
            <h:form>
                <h:commandLink action="#{proClassificacao.createSetup}" value="Nova Prosposta"/>
                <br><br>
                <h:outputText value="Item #{proClassificacao.primeiroRegistro + 1}..#{proClassificacao.ultimoRegistro} of #{proClassificacao.itemCount}"/>&nbsp;
                <h:commandLink action="#{proClassificacao.prev}" value="Anterior " rendered="#{proClassificacao.primeiroRegistro >= proClassificacao.tamanhoArray}"/>&nbsp;
                <h:commandLink action="#{proClassificacao.next}" value="Próximo " rendered="#{proClassificacao.ultimoRegistro + proClassificacao.tamanhoArray <= proClassificacao.itemCount}"/>&nbsp;
                <h:commandLink action="#{proClassificacao.next}" value="Restando #{proClassificacao.itemCount - proClassificacao.ultimoRegistro}"
                               rendered="#{proClassificacao.ultimoRegistro < proClassificacao.itemCount && proClassificacao.ultimoRegistro + proClassificacao.tamanhoArray > proClassificacao.itemCount}"/>
                <h:dataTable value='#{proClassificacao.proClassificacoes}' var='item' border="1" cellpadding="2" cellspacing="0">
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Codigo"/>
                        </f:facet>
                        <h:commandLink action="#{proClassificacao.detailSetup}" value="#{item.codigo}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="N° Proposta"/>
                        </f:facet>
                            <h:outputText value="#{item.nProposta}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Colocacao"/>
                        </f:facet>
                            <h:outputText value="#{item.colocacao}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Valor"/>
                        </f:facet>
                            <h:outputText value="#{item.valor}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Empresa"/>
                        </f:facet>
                            <h:outputText value="#{item.empresa}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Status"/>
                        </f:facet>
                            <h:outputText value="#{item.status}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Observação"/>
                        </f:facet>
                            <h:outputText value="#{item.obs}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Codigo Proposta"/>
                        </f:facet>
                            <h:outputText value="#{item.codProposta}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Nota Tecnica"/>
                        </f:facet>
                            <h:outputText value="#{item.notaTecnica}"/>
                    </h:column>
                    <h:column>
                        <h:commandLink value="Remover" action="#{proClassificacao.destroy}">
                            <f:param name="codigo" value="#{item.codigo}"/>
                        </h:commandLink>
                            <h:outputText value=" "/>
                        <h:commandLink value="Editar" action="#{proClassificacao.editSetup}">
                            <f:param name="codigo" value="#{item.codigo}"/>
                        </h:commandLink>
                    </h:column>
                </h:dataTable>
            </h:form>
        </f:view>
        <br>
        <a href="/Proposta/index.jsp">Voltar para a página inicial</a>
        <br>
    </body>
</html>

E seja bem-vindo ao fórum! :thumbup:

paulo.marcelo

Fernando ficou bem melhor mesmo.

V

Ah sim… obrigado ^^

V

Mas então, o compilador não faz nenhuma referência ao local do erro. Aí, eu tirei o “catch” do método e o TomCat exibiu a seguinte tela de erro:

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: javax.servlet.jsp.JspException: javax.faces.el.EvaluationException: Error getting property 'proClassificacoes' from bean of type br.com.projectus.proposta.persistencia.ProClassificacaoController: java.lang.StringIndexOutOfBoundsException: String index out of range: 0
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
	com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
	com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

root cause

javax.servlet.ServletException: javax.servlet.jsp.JspException: javax.faces.el.EvaluationException: Error getting property 'proClassificacoes' from bean of type br.com.projectus.proposta.persistencia.ProClassificacaoController: java.lang.StringIndexOutOfBoundsException: String index out of range: 0
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:854)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
	org.apache.jsp.proClassificacao.Listar_jsp._jspService(Listar_jsp.java:103)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
	com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
	com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

root cause

javax.faces.el.EvaluationException: javax.faces.el.EvaluationException: Error getting property 'proClassificacoes' from bean of type br.com.projectus.proposta.persistencia.ProClassificacaoController: java.lang.StringIndexOutOfBoundsException: String index out of range: 0
	com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:206)
	com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:154)
	javax.faces.component.UIData.getValue(UIData.java:527)
	javax.faces.component.UIData.getDataModel(UIData.java:856)
	javax.faces.component.UIData.setRowIndex(UIData.java:379)
	com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:65)
	javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:683)
	javax.faces.component.UIData.encodeBegin(UIData.java:681)
	javax.faces.webapp.UIComponentTag.encodeBegin(UIComponentTag.java:591)
	javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:543)
	com.sun.faces.taglib.html_basic.DataTableTag.doEndTag(DataTableTag.java:491)
	org.apache.jsp.proClassificacao.Listar_jsp._jspx_meth_h_dataTable_0(Listar_jsp.java:398)
	org.apache.jsp.proClassificacao.Listar_jsp._jspx_meth_h_form_0(Listar_jsp.java:190)
	org.apache.jsp.proClassificacao.Listar_jsp._jspx_meth_f_view_0(Listar_jsp.java:129)
	org.apache.jsp.proClassificacao.Listar_jsp._jspService(Listar_jsp.java:90)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
	com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
	com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.
Criado 5 de março de 2008
Ultima resposta 5 de mar. de 2008
Respostas 5
Participantes 3