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
packagebr.com.caelum.agenda.dao;importjava.sql.*;importjava.util.*;importbr.com.caelum.agenda.modelo.Contato;importbr.com.caelum.jdbc.Conexao;publicclassContatoDAO{publicvoidadiciona(Contatocontato)throwsSQLException{Connectionconn=Conexao.getConexao();Stringsql="INSERT INTO contatos(nome,email,endereco) VALUES (?,?,?)";PreparedStatementstmt=conn.prepareStatement(sql);stmt.setString(1,contato.getNome());stmt.setString(2,contato.getEmail());stmt.setString(3,contato.getEndereco());stmt.execute();stmt.close();}publicList<Contato>lista()throwsSQLException{Connectionconn=Conexao.getConexao();Stringsql="SELECT * FROM contatos";PreparedStatementstmt=conn.prepareStatement(sql);ResultSetrs=stmt.executeQuery();List<Contato>lista=newArrayList<Contato>();while(rs.next()){Contatocont=newContato();cont.setIdcontato(rs.getInt("idcontato"));cont.setNome(rs.getString("nome"));cont.setEmail(rs.getString("email"));cont.setEndereco(rs.getString("endereco"));lista.add(cont);}rs.close();stmt.close();returnlista;}}
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!!!
G
getAdicted
Boa noite,
Modifica
dao.lista
e
lista
para
dao.getLista
e
getLista
[]'s
A
Anderson_S
getAdicted:
Boa noite,
Modifica
dao.lista
e
lista
para
dao.getLista
e
getLista
[]'s
Continua dando o mesmo erro, por que você sugeriu trocar “nomes”, infelizmente não mudou nada!!
Obrigado!
R
romarcio
Aparentemente ta Ok.
Vc debugou para ver se o método lista() está sendo chamado e se está trazendo os registros?
A
Anderson_S
romarcio:
Aparentemente ta Ok.
Vc debugou para ver se o método lista() está sendo chamado e se está trazendo os registros?
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
Eu acho interessante procurarmos direto na fonte (documentação), mas tem um cheiro aqui:
[]'s
R
romarcio
Realmente, faltava o get.
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();
G
getAdicted
romarcio:
Realmente, faltava o get.
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();
Perfeito! :thumbup:
G
getAdicted
Encerra seus tópicos com a tag [RESOLVIDO] caso a sua dúvida tenha sído sanada…
[]'s
A
Anderson_S
romarcio:
Realmente, faltava o get.
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();
Perfeito!!
Entendi…
Obrigado ai por tudo!!
H
Hhaninha
Pessoal estou com erro nessa página já tentei de varias formas solucionar e não consigo me ajudem por favor?
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.