Erro taglibs em JSP

2 respostas
java
C

Boa noite pessoal, há dois dias venho buscando encontrar uma solução para o erro a baixo, mas não consegui resolve-lo das maneiras propostas.

  1. O exercício é listar os contatos persistido no meu banco de dados através das taglibs do tipo core. (Exercício 7.7 da apostila Caelum fj21).

    1.1. Criei minha Java Bean conforme a baixo:

public class Contato {

public Long id;

public String nome;

public String email;

public String endereco;

public Calendar dataNascimento;
public Long getId() {
	return id;
}

public void setId(Long id) {
	this.id = id;
}

public String getNome() {
	return this.nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

public String getEmail() {
	return email;
}

public void setEmail(String email) {
	this.email = email;
}

public String getEndereco() {
	return endereco;
}

public void setEndereco(String endereco) {
	this.endereco = endereco;
}

public Calendar getDataNascimento() {
	return dataNascimento;
}

public void setDataNascimento(Calendar dataNascimento) {
	this.dataNascimento = dataNascimento;
}

}

1.2 - Segue o método de listar os contatos da minha DAO:

public List getLista() {

try {

List contatos = new ArrayList();

PreparedStatement stmt = this.connection.prepareStatement(select * from contatos);
ResultSet rs = stmt.executeQuery();

		while(rs.next()) {
			Contato contato = new Contato();
			//popula o objeto contato
			contato.setId(rs.getLong("id"));
			contato.setNome(rs.getString("nome"));
			contato.setEmail(rs.getString("email"));
			contato.setEndereco(rs.getString("endereco"));

			//popula a data de nascimento do contato, fazendo a conversao
			Calendar data = Calendar.getInstance();
			data.setTime(rs.getDate("dataNascimento"));
			contato.setDataNascimento(data);

			//adiciona o contato na lista
			contatos.add(contato);
		}

		rs.close();
		stmt.close();

		return contatos;
	} catch (SQLException e) {
		throw new RuntimeException(e);
	}
}

1.3 - Segue minha JSP de listagem:

<%@ taglib uri = “http://java.sun.com/jsp/jstl/core” prefix =“c” %>
<%@ page language=“java” contentType="text/html; charset=ISO-8859-1"
pageEncoding=“ISO-8859-1”%>

Lista de Contatos Taglib
<body>

	<!-- Primeiramente iremos instanciar nossa dao para que possamos manipular os dados -->
	
	<jsp:useBean id="dao" class="br.com.caelum.agenda.dao.ContatoDao"/>
	
	<!-- Agora vamos iterar sobre a lista trazida pelo método dao em "contato"  -->
	
	
	<table>
		<c:forEach var="contato" items="S{dao.lista}">
		<tr>
			<td>${contato.nome}</td>
			<td>${contato.email}</td>
			<td>${contato.endereco}</td>
			<td>${contato.dataNascimento.time}</td>
		</tr>
		</c:forEach>
	</table>
</body>

1.4 - Segue o erro:

fev 17, 2016 10:57:49 PM org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [jsp] in context with path [/fj21-agenda] threw exception [An exception occurred processing JSP page /lista-contato.jsp at line 27

24:


25: <c:forEach var=“cont” items=“S{dao.lista}”>
26:
27:
28:
29: </c:forEach>
30:
${cont.nome}
Stacktrace:] with root cause

javax.el.PropertyNotFoundException: Property nome not found on type java.lang.String

at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:229)

at javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:206)

at javax.el.BeanELResolver.property(BeanELResolver.java:317)

at javax.el.BeanELResolver.getValue(BeanELResolver.java:85)

at org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:104)

at org.apache.el.parser.AstValue.getValue(AstValue.java:183)

at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185)

at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:1026)

at org.apache.jsp.lista_002dcontato_jsp._jspx_meth_c_005fforEach_005f0(lista_002dcontato_jsp.java:140)

at org.apache.jsp.lista_002dcontato_jsp._jspService(lista_002dcontato_jsp.java:99)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)

at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

2.0 - Aparentemente seria um erro na EL que busca dados através do método getNome, mas não consigo identificar um erro equivalente. Já apaguei o cache do servidor (pasta work), mas mesmo assim o erro impera. O que não estou vendo?

Agradeço antecipadamente.

2 Respostas

igomes
"c:forEach var="contato" items="S{dao.lista}" E esse S perdido ? "c:forEach var="contato" items="${dao.lista}"

http://docs.oracle.com/javaee/1.4/tutorial/doc/JSTL4.html

C

Era isso mesmo igomes, que falta de atenção a minha!

Obrigado pela ajuda!

Criado 18 de fevereiro de 2016
Ultima resposta 5 de mar. de 2016
Respostas 2
Participantes 2