Fala ai galera!!
Tava desenvolvendo uma Página Web JSP aqui juntamente com JSTL, mas deu um erro aqui, e não conseguir encontrar a solução… Irei postar minha página JSP com JSTL e o erro que está ocorrendo
org.apache.jasper.el.JspPropertyNotFoundException: /lista-contatos-elegante.jsp(19,12) ‘${dao.lista}’ Property ‘lista’ not found on type br.com.caelum.agenda.dao.ContatoDAO
org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:104)
org.apache.jsp.lista_002dcontatos_002delegante_jsp._jspx_meth_c_005fforEach_005f0(lista_002dcontatos_002delegante_jsp.java:114)
org.apache.jsp.lista_002dcontatos_002delegante_jsp._jspService(lista_002dcontatos_002delegante_jsp.java:84)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.16 logs.
Apache Tomcat/6.0.16[/code]
Cara, esse ta terrível, ja fiz altas paradas e não encontrei esse Erro…
O mais sinistro é que eu to estudando JSP e JSTL agora, e me deparo com esse erro terrível desse!!!
[quote=romarcio]Aparentemente ta Ok.
Vc debugou para ver se o método lista() está sendo chamado e se está trazendo os registros?[/quote]
Não, como faz esse processo
[quote=romarcio]Aparentemente ta Ok.
Vc debugou para ver se o método lista() está sendo chamado e se está trazendo os registros?[/quote]
Acabei de realizar um teste simples aqui com o método lista, e ele retornou os dados no console do Java…
Uai, eu fiz isso e deu certo…
Mas qual a explicação para isso…
Por que o método lista do DAO foi alterado o nome para getLista, e na JSTL no arquivo JSP o certo sería colocar depois do “dao” o mesmo nome do metodo, agora eu pergunto, por que coloquei um nome diferente dentro do “dao” do JSP e deu certo…
como na classe ContatoDAO existe o método getLista(), pela lógica que estou lendo aqui na apostila da Caelum, onde ele explica sobre JSTL, dentro da página JSP onde eu coloco dao dentro da expression Lenguage sería assim dao.getLista, esse sería o certo, mas por que eu coloquei um nome diferente dentro da expression Lenguage do dao e deu certo???
A Solução que nosso amigo ai acima sugeriu deu certo, eu só quero entender por que dentro da Expression Lenguage “dao” eu tirei o get, e só coloquei lista e deu certo,
Dentro da classe ContatoDAO eu troquei o nome do método para getLista(), pela lógica dentro a Expression Lenguage “dao” eu tería que colocar ${dao.getLista}, mas ao inves disso eu tirei o “get” e coloquei somente o “lista”, e deu certo, a dúvida agora é, por que deu certo sendo que o nome dentro do Expression Lenguage “dao” está diferente do nome do método
A Solução que nosso amigo ai acima sugeriu deu certo, eu só quero entender por que dentro da Expression Lenguage “dao” eu tirei o get, e só coloquei lista e deu certo,
Dentro da classe ContatoDAO eu troquei o nome do método para getLista(), pela lógica dentro a Expression Lenguage “dao” eu tería que colocar ${dao.getLista}, mas ao inves disso eu tirei o “get” e coloquei somente o “lista”, e deu certo, a dúvida agora é, por que deu certo sendo que o nome dentro do Expression Lenguage “dao” está diferente do nome do método[/quote]
Eu acho interessante procurarmos direto na fonte (documentação), mas tem um cheiro aqui:
O que acontece é que o JSTL vai no bean sempre em busca de um método get.
Veja que você tem o método getLista() e chama ele sem usar o get, só como lista (para simplificar não se usa o get no código JSTL).
Para as variareis acontece a mesma coisa, você tem na classe contato os métodos getNome(), getEmail() e getEndereco(), mas quando chama no JSTL faz apenas .nome, .email e .endereco.
Se você for na classe contato e excluir os métodos getNome(), getEmail() e getEndereco(), o JSTL não vai encontralos quando fizer .nome, .email e .endereco. E isso acontece também com o método getLista().
Se não estou enganado o JSTL usa o padrão da sun para EJB, por isso sempre quando voce usa o <c:forEach items="{lista}"> ele vai buscar no bean o comando getLista();
O que acontece é que o JSTL vai no bean sempre em busca de um método get.
Veja que você tem o método getLista() e chama ele sem usar o get, só como lista (para simplificar não se usa o get no código JSTL).
Para as variareis acontece a mesma coisa, você tem na classe contato os métodos getNome(), getEmail() e getEndereco(), mas quando chama no JSTL faz apenas .nome, .email e .endereco.
Se você for na classe contato e excluir os métodos getNome(), getEmail() e getEndereco(), o JSTL não vai encontralos quando fizer .nome, .email e .endereco. E isso acontece também com o método getLista().
Se não estou enganado o JSTL usa o padrão da sun para EJB, por isso sempre quando voce usa o <c:forEach items="{lista}"> ele vai buscar no bean o comando getLista(); [/quote]
O que acontece é que o JSTL vai no bean sempre em busca de um método get.
Veja que você tem o método getLista() e chama ele sem usar o get, só como lista (para simplificar não se usa o get no código JSTL).
Para as variareis acontece a mesma coisa, você tem na classe contato os métodos getNome(), getEmail() e getEndereco(), mas quando chama no JSTL faz apenas .nome, .email e .endereco.
Se você for na classe contato e excluir os métodos getNome(), getEmail() e getEndereco(), o JSTL não vai encontralos quando fizer .nome, .email e .endereco. E isso acontece também com o método getLista().
Se não estou enganado o JSTL usa o padrão da sun para EJB, por isso sempre quando voce usa o <c:forEach items="{lista}"> ele vai buscar no bean o comando getLista(); [/quote]
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:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
root cause
java.lang.RuntimeException: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/fj21
br.com.caelum.jdbc.ConnectionFactory.getConnection(ConnectionFactory.java:14)
br.com.caelum.jdbc.dao.ContatoDao.(ContatoDao.java:21)
org.apache.jsp.lista_002dcontatos_002delegante_jsp._jspService(lista_002dcontatos_002delegante_jsp.java:76)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
root cause
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/fj21
java.sql.DriverManager.getConnection(Unknown Source)
java.sql.DriverManager.getConnection(Unknown Source)
br.com.caelum.jdbc.ConnectionFactory.getConnection(ConnectionFactory.java:11)
br.com.caelum.jdbc.dao.ContatoDao.(ContatoDao.java:21)
org.apache.jsp.lista_002dcontatos_002delegante_jsp._jspService(lista_002dcontatos_002delegante_jsp.java:76)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.40 logs.