Visualizar dados em Datatable

4 respostas
muniquewassem

Boa noite,

Estou desenvolvendo uma aplicação que tem como único propósito é exibir dados que estão em um banco. Como eu não tenho lá muito conhecimento com JSF, decidi começar com algo bem simples, mas agora empaquei. A aplicação tá montada, mas acho que não está se conectando ao banco porque aparece toda estrutura e tal, mas só retorna No records found ao invés dos dados.

Vou deixar aqui o que fiz até agora, se alguém puder dar uma olhada e me dar uma idéia, eu agradeço.

package Model;
/**
 *
 * @author Munique
 */


public class Estacao {

    private int codigo;
    private String data;
    private String nomeEstacao;
    private String temperatura;
    private String pressao;
    
    public Estacao() {
    }

    public int getCodigo() {
        return codigo;
    }

    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    public String getNome() {
        return nomeEstacao;
    }

    public void setNome(String nome) {
        this.nomeEstacao = nome;
    }
    
    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }
    
    public String getTemperatura() {
        return temperatura;
    }

    public void setTemperatura(String temperatura) {
        this.temperatura = temperatura;
    }
    
    public String getPressao() {
        return pressao;
    }

    public void setPressao(String pressao) {
        this.pressao = pressao;
    }
}
package Controller;

import Model.Estacao;
import java.sql.SQLException;
import javax.faces.model.DataModel;
import java.util.List;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

/**
 *
 * @author Munique
 */
public class EstacaoController {
    
    private Estacao estacao;
    private DataModel listaEstacoes;

    public DataModel getListarLivros() throws SQLException {
        List<Estacao> lista = new Dao.EstacaoDao().listaEstacao();
        listaEstacoes = new ListDataModel(lista);
        return listaEstacoes;
    }
}
package Dao;

import Model.Estacao;
import Utils.ConexaoBanco;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
/**
 *
 * @author Munique
 */
public class EstacaoDao {

    public List<Estacao> listaEstacao() throws SQLException {
        List<Estacao> estacoes = new ArrayList<Estacao>();

        String select = "SELECT * FROM estacao ORDER BY codigoestacao";

        PreparedStatement stmt = ConexaoBanco.getConnection().prepareStatement(select);
        ResultSet rs = stmt.executeQuery();

        while (rs.next()) {
            Estacao estacao = new Estacao();
            estacao.setCodigo(rs.getInt("codigoestacao"));
            estacao.setNome(rs.getString("descestacao"));
            estacao.setData(rs.getString("horario"));
            estacao.setTemperatura(rs.getString("temperatura"));
            estacao.setPressao(rs.getString("pressao"));
            estacoes.add(estacao);
        }

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

        return estacoes;
    }

}
package Utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
 *
 * @author Munique
 */

public class ConexaoBanco {

    private static final String url = "jdbc:postgresql://localhost:5432/livraria";
    private static final String driver = "org.postgresql.Driver";
    private static final String user = "postgres";
    private static final String pswd = "postgre";    

    public static Connection getConnection() {
        try {
            Class.forName(driver);
            return DriverManager.getConnection(url, user, pswd);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
        return null;
    }
}
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.prime.com.tr/ui">
    <h:head>
        <title>Gerenciador de Livros</title>
        <link type="text/css" rel="stylesheet" href="dot-luv/skin.css"/>
    </h:head>
    <h:body>
        <p:layout fullPage="true">
            <p:layoutUnit position="center">
                <h1>Gerenciador de Estação</h1>
                <br/>
                <h:form prependId="false">
                    <p:dataTable id="tabela" var="estacao" value="#{estacaoController.listarEstacaoes}">
                        <p:column>
                            <f:facet name="header">
                                <h:outputText value="Estacão"/>
                            </f:facet>
                            <h:outputText value="#{estacao.nomeEstacao}" />
                        </p:column>
                        <p:column>
                            <f:facet name="header">
                                <h:outputText value="Horário"/>
                            </f:facet>
                            <h:outputText value="#{estacao.horario}"/>
                        </p:column>
                        <p:column>
                            <f:facet name="header">
                                <h:outputText value="Pressão"/>
                            </f:facet>
                            <h:outputText value="#{estacao.pressao}"/>
                        </p:column>
                        <p:column>
                            <f:facet name="header">
                                <h:outputText value="Temperatura"/>
                            </f:facet>
                            <h:outputText value="#{estacao.temperatura}"/>
                        </p:column>
                    </p:dataTable>
                </h:form>
            </p:layoutUnit>
        </p:layout>

    </h:body>
</html>

4 Respostas

luxu

Bom mas no MB(estacaoController) não tem esse método q vc chama no DataTable:

<p:dataTable id="tabela" var="estacao" value="#{estacaoController.listarEstacaoes}">

lá só tem esse método:

getListarLivros()

e meu método retorna um List não um DataModel veja:

@ManagedBean(name = "entradaCargosBBean")
@ViewScoped
public class EntradaCargosBackingBean implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Cargo cargo = new Cargo();

	public List<Cargo> getCargos() {
		InterfaceDAO<Cargo> cargoDAO = new HibernateDAO<Cargo>(Cargo.class,
				FacesContextUtil.getRequestSession());
		return cargoDAO.getBeansByExample(this.getCargo());
	}

minha página

<p:dataTable id="tabela" value="#{entradaCargosBBean.cargos}"
	var="cargo" binding="#{cargoBean.tabela}"
	emptyMessage="sem registros" scrollable="true" height="100" style="font-size:12px;" >

vc usa anotações ou não? Pq se usar anotações faltou dizer q essa classe é um ManagedBean igual o meu de cima, na questão do DataModel num sei se pode ou não tá?

muniquewassem

Eu não to usando Hibernate e nem Anotações porque não entendi bem o funcionamento deles. Eu tenho que mostrar essa aplicação logo então to me virando aqui.

luxu

mas o q passei naum ajudou em nd? Nem precisa usar anotações e hibernate, apesar de facilitar em muito nosso trabalho.

muniquewassem

Na verdade, eu não entendi.
Eu fiz isso baseado em um exemplo que vi em um CRUD com Anotações e estava assim, mas como não tenho o conhecimento, tentei aplicar o padrão de MVC que já conhecia de desktop.

Alterei a nomeação e chamada do método, mas ainda nada.

public DataModel listarEstacoes() throws SQLException { List<Estacao> lista = new Dao.EstacaoDao().listaEstacao(); listaEstacoes = new ListDataModel(lista); return listaEstacoes; }

<h:form prependId="false"> <p:dataTable id="tabela" var="estacao" value="#{estacaoController.listarEstacoes}"> <p:column> <f:facet name="header"> <h:outputText value="Estacão"/> </f:facet>

Existe algum outro meio pra exibição de dados?

Criado 4 de outubro de 2011
Ultima resposta 5 de out. de 2011
Respostas 4
Participantes 2