Exercicio da fj21-caelum - lista-contatos-scriptlet.jsp
7 respostas
B
bsvieira
Bom dia senhores, estou com dificuldades nessa parte da apostila da caelum, onde é necessário criar uma JSP para listar os contatos que estão armazenados no banco. Segui os passos da apostila mas estou recebendo um erro (HTTP-500) que não consegui identificar:
Segue a mensagem do console informando a Exception, onde me diz que a JSP requer que um nome do atributo seja precedido por espaço, mas não entendi esse erro:
Grave: Servlet.service() for servlet [jsp] in context with path [/fj21-agenda] threw exception [/lista-contatos-scriptlet.jsp (line: 1, column: 94) The JSP specification requires that an attribute name is preceded by whitespace] with root cause
org.apache.jasper.JasperException: /lista-contatos-scriptlet.jsp (line: 1, column: 94) The JSP specification requires that an attribute name is preceded by whitespace
ela é a primeira linha do arquivo jsp, verifique se você não apagou sem querer porque o resto do código está certo
B
bsvieira
Eu não enviei com essa linha de código mas tem sim!!
Obrigado pela dica.
<%@pagelanguage="java"contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%><%@pageimport="java.util.*, br.com.caelum.modelo.*, br.com.caelum.dao.*"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type"content="text/html; charset=ISO-8859-1"><title>Lista de contatos</title></head><body><table><%ContatoDaodao=newContatoDao();List<Contato>contatos=dao.getLista();for(Contatocontato:contatos){%><tr><td><%=contato.getNome()%></td><td><%=contato.getEmail()%></td><td><%=contato.getEndereco()%></td><td><%=contato.getDataNascimento().getTime()%></td></tr><%}%></table></body></html>
G
Guike
bom seus pacotes estão importados certo? sua classe dao você escreveu realmente ContatoDao mesmo e não “ContatoDAO” rejeveja tudo certo pois eu recompilei sua classe aqui a unica diferença, coisa que alterei foi de ContatoDao para ContatoDAO que foi o jeito que escrevi minha classe, e aqui compilou e exibiu meus contatos, sua jsp está dentro de WebContent? caso qualquer coisa apaga esse arquivo jsp e reecreva outro.
B
bsvieira
Fiz o que você me aconselhou, só que agora o erro mudou. Estou recebendo um erro referente a data - [color=red] Unparseable date: “2012-02-28”[/color]
Os códigos para tratar a data:
ContatoDao com o metodo getLista:
public List<Contato> getLista() {
try {
PreparedStatement stmt = this.conn
.prepareStatement("select * from contatos");
ResultSet rs = stmt.executeQuery();
List<Contato> contatos = new ArrayList<Contato>();
while (rs.next()) {
// criando o objeto contato
Contato contato = new Contato();
contato.setNome(rs.getString("nome"));
contato.setEmail(rs.getString("email"));
contato.setEndereco(rs.getString("endereco"));
contato.setDataFormatada(rs.getString("dataNascimento"));
contatos.add(contato);
}
rs.close();
stmt.close();
return contatos;
} catch (Exception e) {
throw new DaoException(e);
}
}
E o meu DTO com setDataFormatada e getDataFormatada:
publicList<Contato>getLista(){try{List<Contato>listaContatos=newArrayList<Contato>();PreparedStatementstmt=con.prepareStatement("select * from contatos");ResultSetrs=stmt.executeQuery();while(rs.next()){Contatocontato=newContato();contato.setNome(rs.getString("nome"));contato.setEmail(rs.getString("email"));contato.setEndereco(rs.getString("endereco"));Calendardata=Calendar.getInstance();data.setTime(rs.getDate("dataNascimento"));contato.setDataNascimento(data);listaContatos.add(contato);}rs.close();stmt.close();returnlistaContatos;}catch(SQLExceptione){thrownewRuntimeException(e);}}
Eu fiz dessa forma minha data e funcionou qualqer coisa posta novamente