dataTable

9 respostas
anderson.bonavides

Pessoal,

Por favor me ajudem, não sei mais oq fazer. Tenho um dataTable que lista vazio, ex: se eu tiver 3 inserções no banco ele lista as 3 mas vazio. Já andei olhando esta tudo vindo corretinho, ja olhei até as configurações dos xml´s. Segue minha classe utilitaria:
public class HibernateUtility {

	private static SessionFactory sessionFactory;
	private static Session session;

	static {
		try {
			sessionFactory = new AnnotationConfiguration().configure(
					"/hibernate.cfg.xml").buildSessionFactory();
		} catch (Exception e) {
			e.printStackTrace();
			sessionFactory = null;
		}
	}

	public static Session getSession() {
		return session = sessionFactory.openSession();
	}
}
Meu método que busca a lista do banco:
public List<T> listar() {
		List<T> objects = null;
		try {
			Session session = HibernateUtility.getSession();
			@SuppressWarnings("unused")
			Transaction tx = session.beginTransaction();
			Query select = session.createQuery("Select u from Usuario u");
			objects = select.list();
			session.close();
			System.out.println("\nNAO LANCOU EXCECAO!!!");
		} catch (HibernateException he) {
			System.out.println("LANCOU EXCECAO!!!");
			he.printStackTrace();
		}
		return objects;
	}
Meu método Managed Bean:
public class UsuarioBean {

	private Usuario usuario;
	private Endereco endereco;
	private Login login;
	@SuppressWarnings("unchecked")
	private UsuarioDAOImpl usuarioDaoImpl;
	@SuppressWarnings("unused")
	private String resultado;
	private List<Usuario> usuarios;

	//getrs e setres

	@SuppressWarnings("unchecked")
	public List<Usuario> getUsuarios() {
		usuarios = new ArrayList<Usuario>();
		usuarios = usuarioDaoImpl.listar();
		return usuarios;
	}
}
E por fim meu dataTAble:
<rich:dataTable value="#{usuarioBean.usuarios}" var="usuario"
					onRowMouseOver="this.style.backgroundColor='#F8F8F8'"
					onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'"
					rowClasses="cur">
					<rich:column>
						<f:facet name="header">Id</f:facet>
						<h:outputText value="#{usuario.id}" />
					</rich:column>
					<rich:column>
						<f:facet name="header">Nome</f:facet>
						<h:outputText value="#{usuario.nome}" />
					</rich:column>
					<rich:column>
						<f:facet name="header">Login</f:facet>
						<h:outputText value="#{usuario.login.nomeLogin}" />
					</rich:column>
				</rich:dataTable>

Novamente ficaria muito grato se alguem pudesse ajudar.

9 Respostas

D

Esta faltando instanciar o DataModel no usuarioBean:

public class UsuarioBean {   
  
    private Usuario usuario;   
    private Endereco endereco;   
    private Login login;   
    @SuppressWarnings("unchecked")   
    private UsuarioDAOImpl usuarioDaoImpl;   
    @SuppressWarnings("unused")   
    private String resultado;   
    private List<Usuario> usuarios;   
    private DataModel modelo;
    //getrs e setres   
  
    @SuppressWarnings("unchecked")   
    public DataModel  getUsuarios() {   
        usuarios = new ArrayList<Usuario>();   
        modelo=new ListDataModel(usuarioDaoImpl.listar()); 
        return modelo;   
    }   
}
O metódo que é chamdo para renderizar DataTable deve retornar um ListModel não um arraylist. Caso não dê certo por favor posta ai.

[/code]

anderson.bonavides

Continuo com o mesmo problema.

Segue meu bean modificado:

public class UsuarioBean {

	private Usuario usuario;
	private Endereco endereco;
	private Login login;
	@SuppressWarnings("unchecked")
	private UsuarioDAOImpl usuarioDaoImpl;
	@SuppressWarnings("unused")
	private String resultado;
	private Collection<Usuario> usuarios;
	private DataModel modelo;
	
	//getrs e setrs


	@SuppressWarnings("unchecked")
	public DataModel getUsuarios() {
		usuarios = new ArrayList<Usuario>();
		modelo = new ListDataModel(usuarioDaoImpl.listar());
		return modelo;
	}
}
Meu datatable:
<rich:dataTable value="#{usuarioBean.model}" var="usuario"
					onRowMouseOver="this.style.backgroundColor='#F8F8F8'"
					onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'"
					rowClasses="cur">
					<rich:column>
						<f:facet name="header">Id</f:facet>
						<h:outputText value="#{usuario.id}" />
					</rich:column>						
					<rich:column>
						<f:facet name="header">Nome</f:facet>
						<h:outputText value="#{usuario.nome}" />
					</rich:column>

</rich:dataTable>
ggarnier

No dataTable o value está errado, deveria ser “#{usuarioBean.modelo}”

anderson.bonavides

Tava correto, eu tirei a letra “o” sem querer. O problema persiste…

D

Na sua datable tinha que ser :

rich:dataTable value="#{usuarioBean.usuarios}" var="usuario" .
Agora vai dar certo do outro jeito vc estava chamando
um atributo null para carregar a tabela.

anderson.bonavides

Sem sucesso…

=(

D

Posta o código ai dos import, por favor??
Vc pode ter importado um DataModel de uma pacote errado.

anderson.bonavides

São esses:

import javax.faces.model.DataModel; import javax.faces.model.ListDataModel;

anderson.bonavides

Em tava tentando com collection e veja o que exibe no console:

1
Anderson
Cristo
anderson

2
Anderson
Cristo
anderson

3
Anderson
Cristo
anderson
------------------------------------------------------

Onde trabalhava implementavamos com Collection mas utilizavamos JPA aqui estou utilizando Hibernate/JPA.

Criado 24 de março de 2009
Ultima resposta 24 de mar. de 2009
Respostas 9
Participantes 3