Retornar select no JSP

3 respostas
P

Pessoal faço um select no Servlet da seguinte forma:

package modelo;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import javax.servlet.http.HttpServlet;

/**
 *
 * @author petter
 */
public class Controle extends HttpServlet{
    
    public Collection listar() throws SQLException, ClassNotFoundException{
        Conexao conexao = new Conexao();
        
        PreparedStatement ps = conexao.conn.prepareStatement("select * from estados where pai_codigo = 1");
        
        ResultSet rs = ps.executeQuery();
        
        ArrayList dados = new ArrayList();
        
        while(rs.next()){
            Dado dado = new Dado();
            dado.setSigla(rs.getString("SIGLA"));
            dado.setEstado(rs.getString("ESTADO"));
            
            dados.add(dado);
        }
        ps.close();
        return dados;
    }
    
}

E no meu JSP estou fazendo isso:

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>:: Lista de estados e siglas - BRASIL ::</title>
    </head>
    <body>

    <h1>Lista de estados e siglas - BRASIL</h1>
    <%-- Cria um usebean para utilizar o Servlet --%>
    <jsp:useBean id="listagem" scope="application" class="modelo.Controle" />
    
    <%-- Faz um set para retornar os valores do arraylist do Servlet --%>
    <c:set var="dados" value="${listagem.dados}" />
    
        <table border="0" cellpadding="0" cellspacing="0">
            <c:forEach var="dados" items="${dados}" varStatus="s">
                <c:choose>
                    <c:when test="${s.count % 2 == 0}">
                        <tr bgcolor="#aaaaaa">
                    </c:when>
                    <c:otherwise>
                        <tr bgcolor='#dddddd'>
                    </c:otherwise>
                </c:choose>
                <td>${dado.estado}</td>
                <td>${dado.sigla}</td>
                </tr>
            </c:forEach>
        </table>
        <br>
        <br>
        <p align="center"><a href="index.html" title="Página principal do teste">Voltar</a></p>
    </body>
</html>

Acusa o seguinte erro:

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: javax.el.PropertyNotFoundException: The class 'modelo.Controle' does not have the property 'listar'.

Já estou revirando esse código a algum tempo e nada de encontrar o erro. Alguém pode dar uma ajuda e me falar onde estou errando?

3 Respostas

timotta

Tem coisa estranha aí.

Se vc quer utilizar o useBean, sua classe não tem porque ser um Servlet.

Contudo o erro se refere ao fato de você não possuir um método getDados(), pois quando você chama ${listagem.dados} o método getDados() é chamado.

Aliás o código do seu JSP ta muito estranho, tem um foreach dentro de outro, sendo que sua estrutura de dados não comporta isso. Acho q você precisa dar uma boa revisada nesse código.

P

Matei quanto a dúvida anterior, foi realmente só usar o get.

Quanto ao foreach não entendi o que vc quis dizer, aliás eu tenho só um, que serve para “pintar” o background das linhas da tabela de cor diferente.

O código retirei de uma apostila, é funcional e agora depois que corrigi o meu get, acusa o erro:

org.apache.jasper.JasperException: javax.el.ELException: java.lang.NullPointerException

Vc sabe onde posso me interar mais sobre esses erros?

zicky23

boa tarde amigo, sem querer ser chato, vc pode postar a classe Dado()?

estou iniciando em jsp, e gostaria de alguns exemplos…

obrigado

Criado 12 de fevereiro de 2007
Ultima resposta 25 de nov. de 2011
Respostas 3
Participantes 3