Como chamar metodo static de pagina JSP com JSTL?

3 respostas
E

Olá pessoal do GUJ,

Estou com o seguinte problema.

Tenho uma classe Bean chamada Entidade;
Também tenho uma class EntidadeDAO com o método static getAll() q retorna List;

Então, no arquivo cliente.jsp estou tentando listar todos os clientes. Obviamente tento chamar ClienteDAO.getAll(). Veja:

<jsp:useBean id="dao" class="com.acme.dao.ClienteDAO"/>

            <table border="1">

                <c:forEach items="${dao.all}" var="c">
                    <tr>
                        <td>
                            <c:out value="${c.nome}"/>
                        </td>
                    </tr>
                </c:forEach>
            </table>

Está retornando o seguinte erro no browser:

HTTP Status 500 -

type Exception report

message

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

exception

org.apache.jasper.JasperException: org.apache.jasper.el.JspPropertyNotFoundException: /cliente.jsp(36,16) ${dao.all} Property ‘all’ not found on type com.acme.dao.ClienteDAO

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:534)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:457)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)

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

javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
root cause

org.apache.jasper.el.JspPropertyNotFoundException: /cliente.jsp(36,16) ${dao.all} Property ‘all’ not found on type com.acme.dao.ClienteDAO

org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:109)

org.apache.jsp.cliente_jsp._jspx_meth_c_005fforEach_005f0(cliente_jsp.java:132)

org.apache.jsp.cliente_jsp._jspService(cliente_jsp.java:103)

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

javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)

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

javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.11 logs.

Apache Tomcat/7.0.11

Alguém pode dar uma luz?

Grato

3 Respostas

C

mostre como esta a o teu ClienteDAO

use a o [code] para mostrar o codigo...

P

Olá amigo, é mais pratico vc criar uma tag customizada que recebe seu bean e dentro dela invoca o método estático retornando a lista que vc quer…
blz
fallow

E

Caio, está aí meu ClienteDAO.
O método que quero usar no arquivo jsp é o getAll(). Começa na linha 44

package com.acme.dao;

import com.acme.entidades.Cliente;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author eduardo
 */
public class ClienteDAO {

    private static Connection conn = null;

    // INCLUIR
    public static void incluir(Cliente cliente) {

        // codigo...
        
    }

    // ATUALIZAR
    public static void atualizar(Cliente cliente) {

        // codigo...
    }

    // PESQUISAR POR ID
    public static Cliente getById(Integer id) {

       // codigo...
    }

    // PESQUISAR POR NOME
    public static List<Cliente> getByName(String nome) {    
     // codigo...
    }

    // PESQUISAR
    public static List<Cliente> getAll() {
        conn = ConnectionFactory.getConnection();
        String sql = "SELECT * FROM cliente";

        Cliente c = null;
        List<Cliente> clienteLista = new ArrayList<Cliente>();

        try {

            PreparedStatement stmt = conn.prepareStatement(sql);
            ResultSet rs = stmt.executeQuery();

            while (rs.next()) {
                c = new Cliente(rs.getInt("idcliente"),
                                rs.getString("nome"),
                                rs.getString("cpf"),
                                rs.getString("logradouro"),
                                rs.getString("cidade"),
                                rs.getString("uf"),
                                rs.getInt("inativo"),
                                rs.getInt("especial"));

                clienteLista.add(c);
            }

            stmt.close();

        } catch (SQLException ex) {
            System.out.println("ERRO ao recuperar lista de clientes" + ex.getMessage());
        }
        return clienteLista;
    }    
}
Criado 26 de abril de 2011
Ultima resposta 26 de abr. de 2011
Respostas 3
Participantes 3