Boa noite meus amigos, estou tentando transformar uma aplicacao JSP que funcionava para uma aplicacao JSF, para um trabalho de faculdade, aproveitei as classes mais genericas como dao, controller, model e atualizei as views para funcionarem com JSF, porem nao consigo acessar a pagina que devia trazer uma lista de produtos do banco de dados e exibir em uma tabela via JSF. o erro e o seguinte:
message java.lang.NullPointerException
description The server encountered an internal error that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: java.lang.NullPointerException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause
java.lang.NullPointerException
javax.faces.webapp.UIComponentClassicTagBase.setJspId(UIComponentClassicTagBase.java:1856)
org.apache.jsp.ListaProdutos_jsp._jspx_meth_f_005fview_005f0(ListaProdutos_jsp.java:226)
org.apache.jsp.ListaProdutos_jsp._jspService(ListaProdutos_jsp.java:193)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.56 logs.
Alguem saberia me nortear sobre o porque desse erro acontecer? Peco desculpas se for alguma pergunta trivial/erro bobo, estou iniciando em JSP/JSF. Desde ja agradeco a ajuda!
Não entendo de JSF, mas não deveria ter uma annotation no seu controller ProdutosController para dizer que ele é um ManagedBean? @ManagedBean(name = “meuBean”) @RequestScoped
Movido para a categoria Java, obrigado por avisar!
Eu adicionei o managed bean no produtosController, e agora ele me retornou um erro diferente:
type Exception report
message An exception occurred processing JSP page /ListaProdutos.jsp at line 107
description The server encountered an internal error that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: An exception occurred processing JSP page /ListaProdutos.jsp at line 107
104: </head>
105: <body>
106:
107: <f:view>
108:
109: <div id="tabela">
110:
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause
java.lang.NullPointerException
javax.faces.webapp.UIComponentClassicTagBase.setJspId(UIComponentClassicTagBase.java:1856)
org.apache.jsp.ListaProdutos_jsp._jspx_meth_f_005fview_005f0(ListaProdutos_jsp.java:227)
org.apache.jsp.ListaProdutos_jsp._jspService(ListaProdutos_jsp.java:194)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.56 logs.
Ao que me parece o <f:view> precisa enxergar o produtosController mas nao esta conseguindo o fazer
Faça um teste usando o System.out.print para exibir os dados dos produtos. Acho que é por ai que voce devia começar. NullPonitetException é erro de algum objeto nulo, talvez voce tenha esquecido de intancia-lo onde devia
o problema de printar os valores que sao passados pelos parametros, e que a aplicacao nem entra na tag de <f:view> do listarProdutos, por conta disso nao consigo saber o que tem chego nos locais onde tem o produtosView.getAlgumaCoisa .
Muito obrigado pela ajuda, eu consegui resolver ontem porém não deu tempo de postar aqui.
Seguinte, conforme citei no inicio do tópico, chances altas de ser um erro bobo rs, o problema era que eu estava tentando acessar a pagina sem chamar a url localhost:porta**/faces/**pagina.jsp, eu estava chamando localhost:porta/pagina.jsp. Sob meu conhecimento, ao depurar a pagina eu percebi que ela nao acessava a tag <f:view> por conta desse equivoco, e eu acredito que o NullPointer se deu neste caso justamente por isso, por nao conseguir entrar nas tags <f:view> consequentemente ele tambem nao acessava as tags que preenchem as variaveis como a que retorna a list e preenche a tabela por exemplo. Me corrijam se estiver errado rs.r.
Agradeço fortemente a ajuda de todos pessoal, aprendi muito com vocês por mais que fosse uma solução diferente da proposta de todos.
Não use páginas jsp para aplicações JSF, utilize xhtml
Então você também alterou o pacote para javax.faces.bean.ManagedBean, pois javax.annotation.ManagedBean não funciona, a menos que você tenha voltado atras e configurado o ManagedBean pelo xml
Isso ai era necessário na versão 1, hoje estamos na 2.3
A versão com configuração via annotations é a partir da versão 2.0, que surgiu em 2009, de lá pra cá mudou muita coisa
Praticamente mais nada é configurado via xml, apenas arquivos de mensagens, locale e phase-listener (que deve vir a ser configurado via annotations na próxima versão)