[Resolvido]Problemas com DataTable do RichFaces

Boa tarde Galerinha.

tenho o seguinte problema, venho desenvolvendo uma aplicação web e estou com um erro na hora de listar meu DataTable, é impressionante pois, em 4 das listegens que eu tenho que exibir, apenas 1 está funcionando corretamente. as que estão erradas somente é exibido os botões de alteração e exclusão.

segue o codigo de uma das classes que estão erradas.

[code]package br.com.docfacil.docfacilweb.control;

import java.util.ArrayList;
import java.util.List;

import javax.faces.component.UIData;

import br.com.docfacil.docfacilweb.model.bean.Perfil;
import br.com.docfacil.docfacilweb.model.dao.PerfilDao;

public class PerfilAction {
private Perfil perfil = new Perfil();
private List listPerfil = new ArrayList();
private String codigo = new String();
private UIData objPerfil = new UIData();
private String valor = “”;
private String campo = “”;

public String imprimir() {
	// imprime a listagem atual exibida.
	return null;
}

public String grava() {
	new PerfilDao().gravar(perfil);
	perfil = new Perfil();
	return null;
}
public String pesquisa(){
	if(!valor.equals("")){
		if(campo.equals("codigo"))
			listPerfil = new PerfilDao().findByCodigo(valor);
		if(campo.equals("descricao"))
			listPerfil = new PerfilDao().findByDescricao(valor);
	}
	return null;
}

// ao tentar ser deletado o perfil será verificado se existe algum usuario
// utilizando aquele perfil, caso exista o sistema não deixará excluir.
public String delete() {
	try {
		perfil = (Perfil) objPerfil.getRowData();
		new PerfilDao().delete(perfil);
		// mensagem de sucesso.
	} catch (Exception e) {
		// mensagem de erro.
	}
	return null;
}

public String altera() {
	perfil = (Perfil) objPerfil.getRowData();
	return "alteraPerfil";
}

public String getCodigo() {
	codigo = new PerfilDao().proximoCodigo();
	return codigo;
}

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

public Perfil getPerfil() {
	return perfil;
}

public void setPerfil(Perfil perfil) {
	this.perfil = perfil;
}

public List<Perfil> getListPerfil() {
	if(valor.equals(""))
	listPerfil = new PerfilDao().list();
	return listPerfil;
}

public void setListPerfil(List<Perfil> listPerfil) {
	this.listPerfil = listPerfil;
}

public UIData getObjPerfil() {
	return objPerfil;
}

public void setObjPerfil(UIData objPerfil) {
	this.objPerfil = objPerfil;
}

public String getValor() {
	return valor;
}

public void setValor(String valor) {
	this.valor = valor;
}

public String getCampo() {
	return campo;
}

public void setCampo(String campo) {
	this.campo = campo;
}

}

[/code]

e a JSP

<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@taglib uri="http://richfaces.ajax4jsf.org/rich" prefix="rich"%>
<%@taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<html>
<f:view>
    <head>
    <link href="css/default.css" rel="stylesheet" type="text/css" />
    <title><h:outputText value="DocFacil - Lista de Categorias" /></title>
    </head>
    <body>
    <div id="header" align="right"><h:outputLink value="Home">
        <h:outputText value="Voltar" />
    </h:outputLink> &emsp; <h:outputLink value="Logout">
        <h:outputText value="Logout" />
    </h:outputLink></div>

    <div id="title" align="center"><h:outputText value="Lista de Categorias" /></div>
    <div id="page" align="center"><h:form>
        <h:panelGrid columns="3">
            <h:outputText value="Valor: " />
            <h:inputText id="valor" value="#{categoriaAction.valor}" size="20" />
            <h:message for="valor" />
            <h:outputText value="Campo: " />
            <h:panelGrid columns="3">
                <h:selectOneRadio id="campos" value="#{categoriaAction.campo}">
                    <f:selectItem itemValue="codigo" itemLabel="Código" />
                    <f:selectItem itemValue="descricao" itemLabel="Descrição" />
                    <f:selectItem itemValue="nivel" itemLabel="Nível" />
                </h:selectOneRadio>
            </h:panelGrid>
            <h:message for="campos" />
        </h:panelGrid>
        <h:commandButton action="#{categoriaAction.lista}" value="Pesquisar" />
    </h:form></div>
    <div id="page" align="center"><h:form>
        <rich:dataTable binding="#{categoriaAction.objDataTableCategoria}" id="categoria"
            var="categoriaData" value="#{categoriaAction.listaCategoria}"
            rendered="#{not empty categoriaAction.listaCategoria}" rows="10" width="95%" border="1">
            <h:column>
                <f:facet name="header">
                    <h:outputText value="Código" />
                </f:facet>
                <h:outputText value="#{categoriaData.codigo}" />
            </h:column>
            <h:column>
                <f:facet name="header">
                    <h:outputText value="Descrição" />
                </f:facet>
                <h:outputText value="#{categoriaData.descricao}" />
            </h:column>
            <h:column>
                <f:facet name="header">
                    <h:outputText value="Nível" />
                </f:facet>
                <h:outputText value="#{categoriaData.nivel}" />
            </h:column>

            <h:column>
                <f:facet name="header">
                    <h:outputText value="Alterar" />
                </f:facet>
                <center><h:commandButton action="#{categoriaAction.alterar}"
                    image="imagens/update.gif" style="height: 19px; width: 18px" /></center>
            </h:column>
            <h:column>
                <f:facet name="header">
                    <h:outputText value="Excluir" />
                </f:facet>
                <center><h:commandButton action="#{categoriaAction.delete}"
                    image="imagens/error.gif" style="height: 19px; width: 18px" /></center>
            </h:column>
            <f:facet name="footer">
                <rich:datascroller for="categoria" />
            </f:facet>
        </rich:dataTable>
    </h:form>
    <center><h:outputLink value="GravaCategoria.jsf">
        <h:outputText value="Nova Categoria" />
    </h:outputLink></center>
    </div>
    <div id="footer" align="right"><h:form>
        <h:commandLink action="#{categoriaAction.imprimir}" value="imprimir" />
        &emsp;
        <h:outputLink value="ListaCategoria.jsf">
            <h:outputText value="Voltar" />
        </h:outputLink>
    </h:form></div>
    </body>
</f:view>
</html>

a minha DAO que busca os dados para incrementar a lista está funcionando tranquilamente, soh que as unicas coisas que exibe na lista são os buttons de alterar e excluir coisa sem logica. alguem poderia me dar uma dica do que eu estou fazendo de errado ?

OBS: as classes Action estão todas funcionando corretamente no meu faces.

Desculpas mandei a JSP errada;

<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@taglib uri="http://richfaces.ajax4jsf.org/rich" prefix="rich"%>
<%@taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<html>
<f:view>
    <head>
    <title><h:outputText value="DocFacil - Lista de Perfil" /></title>
    <link href="css/default.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
    <div id="header" align="right"><h:outputLink value="MenuPrincipal.jsf">
        <h:outputText value="Home" />
    </h:outputLink> &emsp; <h:outputLink value="logout">
        <h:outputText value="Logout" />
    </h:outputLink></div>

    <div align="center"><h:outputText>Lista de Perfil</h:outputText></div>
    <div id="page" align="center"><h:form>
        <h:panelGrid columns="2">
            <h:outputText value="Valor: " />
            <h:inputText value="#{perfilAction.valor}" style="width: 251px" />

            <h:outputText value="Por: " />
            <h:panelGrid columns="2">
                <h:selectOneRadio value="#{perfilAction.campo}">
                    <f:selectItem itemValue="codigo" itemLabel="Código" />
                    <f:selectItem itemValue="descricao" itemLabel="Descrição" />
                </h:selectOneRadio>
            </h:panelGrid>
        </h:panelGrid>
        <h:commandButton type="submit" value="Pesquisar" action="#{perfilAction.pesquisa}" />
    </h:form></div>
    <div id="page" align="center"><h:form>
        <rich:dataTable binding="#{perfilAction.objPerfil}" id="perfil" var="perfilData"
            value="#{perfilAction.listPerfil}" rendered="#{not empty perfilAction.listPerfil}"
            rows="10" width="80%" border="1">
            <f:facet name="header">
                <rich:columnGroup>
                    <h:column>
                        <h:outputText value="Código" />
                    </h:column>
                    <h:column>
                        <h:outputText value="Descrição" />
                    </h:column>
                    <h:column>
                        <h:outputText value="Consulta" />
                    </h:column>
                    <h:column>
                        <h:outputText value="Manutenção" />
                    </h:column>
                    <h:column>
                        <h:outputText value="Gerenciamento" />
                    </h:column>
                    <h:column>
                        <h:outputText value="Configuração" />
                    </h:column>
                    <h:column>
                        <h:outputText value="Alterar" />
                    </h:column>
                    <h:column>
                        <h:outputText value="Excluir" />
                    </h:column>
                </rich:columnGroup>
            </f:facet>
            <h:column>
                <h:outputText value="#{perfilData.codigo}" />
            </h:column>
            <h:column>
                <h:outputText value="#{perfilData.descricao}" />
            </h:column>
            <h:column>
                <h:outputText value="#{perfilData.consulta}" />
            </h:column>
            <h:column>
                <h:outputText value="#{perfilData.manutencao}" />
            </h:column>
            <h:column>
                <h:outputText value="#{perfilData.gerenciamento}" />
            </h:column>
            <h:column>
                <h:outputText value="#{perfilData.configuracao}" />
            </h:column>
            <h:column>
                <h:commandButton action="#{categoriaAction.alterar}" image="imagens/update.gif"
                    style="height: 19px; width: 18px" />
            </h:column>
            <h:column>
                <h:commandButton action="#{categoriaAction.delete}" image="imagens/error.gif"
                    style="height: 19px; width: 18px" />
            </h:column>
            <f:facet name="footer">
                <rich:datascroller for="perfil" />
            </f:facet>
        </rich:dataTable>
    </h:form> <h:outputLink value="GravaPerfil.jsf">
        <h:outputText value="Novo Perfil" />
    </h:outputLink></div>
    <div id="footer" align="right"><h:outputLink value="">
        <h:outputText value="Imprimir" />
    </h:outputLink> &emsp; <h:outputLink value="MenuPrincipal.jsf">
        <h:outputText value="Voltar" />
    </h:outputLink></div>
    </body>
</f:view>
</html>

A sua lista possui valores, vc olhou se não está retornando uma lista de objetos com os valores null, tipo 10 objetos mas com seus valores nulos???

abss

já verifiquei ela retorna a lista de objeto perfeitamente preenchida… a lista de perfil funcionou, mas não mexi em absolutamente nada do código, apenas no width da datatable,
mas as outras continuam erradas.

o pior disso tudo é que eu não achei onde está a raiz do problema.

postarei o codigo da subcategoria que ainda possui erro.
a bean e a dao tambem para que não reste duvidas.

Obrigado pela atenção.

bean

package br.com.docfacil.docfacilweb.model.bean;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name = "Subcategoria")
public class Subcategoria {
	@Id
	@GeneratedValue
	private Integer codigo;
	@Column
	private String descricao;
	@ManyToOne
	private Categoria categoria;
	@Column
	private String subnivel;

	public Integer getCodigo() {
		return codigo;
	}

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

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public Categoria getCategoria() {
		return categoria;
	}

	public void setCategoria(Categoria categoria) {
		this.categoria = categoria;
	}

	public String getSubnivel() {
		return subnivel;
	}

	public void setSubnivel(String subnivel) {
		this.subnivel = subnivel;
	}
}

DAO

package br.com.docfacil.docfacilweb.model.dao;

import java.util.ArrayList;
import java.util.List;

import javax.faces.model.SelectItem;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;

import br.com.docfacil.docfacilweb.model.bean.Categoria;
import br.com.docfacil.docfacilweb.model.bean.Subcategoria;

public class SubcategoriaDao {
	Session s = null;
	SessionFactory f = null;
	Transaction t = null;

	public SubcategoriaDao() {
		f = new AnnotationConfiguration().configure(
				"/br/com/docfacil/docfacilweb/model/dao/hibernate.cfg.xml")
				.buildSessionFactory();
		s = f.openSession();
		t = s.beginTransaction();
	}

	public void gravar(Subcategoria subcategoria) {
		s.saveOrUpdate(subcategoria);
		t.commit();
		s.close();
	}

	public List<Subcategoria> list() {
		Query q = s.createQuery("from Subcategoria");
		List<Subcategoria> listaSubcategoria = q.list();
		return listaSubcategoria;
	}

	public void delete(Subcategoria subcategoria) {
		s.delete(subcategoria);
		t.commit();
		s.close();
	}

	public List<SelectItem> listCategoria() {
		Query q = s.createQuery("from Categoria");
		List<Categoria> listaCategoria = q.list();
		List<SelectItem> categorias = new ArrayList<SelectItem>();
		for (Categoria categoria : listaCategoria) {
			categorias.add(new SelectItem(categoria.getCodigo().toString(),
					categoria.getNivel() + " - " + categoria.getDescricao()));
		}
		return categorias;
	}

	public List<Subcategoria> findByCodigo(String valor) {
		Query q = s.createQuery("from Subcategoria where codigo = :valor");
		q.setInteger("valor", Integer.parseInt(valor));
		return q.list();
	}

	public List<Subcategoria> findByDescricao(String valor) {
		Query q = s
				.createQuery("from Subcategoria where descricao like :valor");
		q.setString("valor", "%" + valor + "%");
		return q.list();
	}

	public List<Subcategoria> findBySubnivel(String valor) {
		Query q = s.createQuery("from Subcategoria where subnivel  = :valor");
		q.setString("valor", valor);
		return q.list();
	}

	public List<Subcategoria> findByCategoria(String valor) {
		Query q = s
				.createQuery("from Subcategoria where categoria_codigo = :valor");
		q.setInteger("valor", Integer.parseInt(valor));
		return q.list();
	}

	public String proximoCodigo() {
		Query q = s.createSQLQuery("select max(codigo) from subcategoria");
		Integer result = (Integer) q.uniqueResult();
		if (result == null) {
			return "1";
		} else {
			return "" + (result + 1);
		}
	}

//	public static void main(String[] args) {
//		List<Subcategoria> subList = new ArrayList<Subcategoria>();
//		subList = new SubcategoriaDao().list();
//		for (Subcategoria subcategoria : subList) {
//			System.out.println(subcategoria.getCodigo());
//			System.out.println(subcategoria.getDescricao());
//			System.out.println(subcategoria.getCategoria().getCodigo());
//			System.out.println(subcategoria.getSubnivel());
//		}
//	}
}

Action

package br.com.docfacil.docfacilweb.control;

import java.util.ArrayList;
import java.util.List;

import javax.faces.component.UIData;
import javax.faces.model.SelectItem;

import br.com.docfacil.docfacilweb.model.bean.Categoria;
import br.com.docfacil.docfacilweb.model.bean.Subcategoria;
import br.com.docfacil.docfacilweb.model.dao.SubcategoriaDao;

public class SubcategoriaAction {
	private Subcategoria subcategoria = new Subcategoria();
	private Categoria categoria = new Categoria();
	private List<Subcategoria> listSubcategoria = new ArrayList<Subcategoria>(); // lista
	// de
	// subcategorias
	private List<SelectItem> listCategoria = new ArrayList<SelectItem>(); // lista
	// de
	// categorias
	// para
	// o
	// listbox
	private String valor = ""; // valor da pesquisa
	private String campo = ""; // campo da tabela de pesquisa selecionado no
	// radiobox
	private String codigo = ""; // recebe o valor do proximo codigo para
	// exibição.
	private UIData objSubcategoria = new UIData(); // recebe o valor da lista
	// de subcategorias.
	private String codigoCategoria = new String(); // recebe o valor de uma

	// listbox de categoria.

	public String imprimir() {
		return null;
	}

	public String grava() {
		try {
			Categoria categoria = new Categoria();
			categoria.setCodigo(Integer.parseInt(codigoCategoria));
			subcategoria.setCategoria(categoria);
			new SubcategoriaDao().gravar(subcategoria);
			// messagem
		} catch (Exception e) {
			// mensagem
		} finally {
			subcategoria = null;
			return null;
		}
	}

	public String delete() {
		// se a subcategoria não estiver vinculada a nenhuma rota, então ele
		// enviará uma mensagem informando que não poderá ser excluido.
		new SubcategoriaDao().delete(subcategoria);
		return null;
	}

	public String pesquisa() {
		if (valor.equals("")) {
			listSubcategoria = new SubcategoriaDao().list();
		} else {
			if (campo.equals("codigo"))
				listSubcategoria = new SubcategoriaDao().findByCodigo(valor);
			if (campo.equals("descricao"))
				listSubcategoria = new SubcategoriaDao().findByDescricao(valor);
			if (campo.equals("categoria"))
				listSubcategoria = new SubcategoriaDao().findByCategoria(valor);
			if (campo.equals("subnivel"))
				listSubcategoria = new SubcategoriaDao().findBySubnivel(valor);
		}
		return null;
	}

	public String altera() {
		subcategoria = (Subcategoria) objSubcategoria.getRowData();
		return "alteraSubcategoria";
	}

	// getter and setter
	public void setSubcategoria(Subcategoria subcategoria) {
		this.subcategoria = subcategoria;
	}

	public Categoria getCategoria() {
		return categoria;
	}

	public void setCategoria(Categoria categoria) {
		this.categoria = categoria;
	}

	// list recebendo valores default caso não tenha sido passado nenhum
	// parametro no formulario de pesquisa.
	public List<Subcategoria> getListSubcategoria() {
		if (valor.equals(""))
			listSubcategoria = new SubcategoriaDao().list();
		for(Subcategoria subcategoria : listSubcategoria){
			System.out.println(subcategoria.getCodigo());
			System.out.println(subcategoria.getDescricao());
			System.out.println(subcategoria.getCategoria().getCodigo());
			System.out.println(subcategoria.getSubnivel());
			System.out.println("====================================================");
		}
		return listSubcategoria;
	}

	public void setListSubcategoria(List<Subcategoria> listSubcategoria) {
		this.listSubcategoria = listSubcategoria;
	}

	public Subcategoria getSubcategoria() {
		return subcategoria;
	}

	// select do formulario de inclusão de subcategoria recebendo os labels e
	// seus valores.
	public List<SelectItem> getListCategoria() {
		listCategoria = new SubcategoriaDao().listCategoria();
		return listCategoria;
	}

	public void setListCategoria(List<SelectItem> listCategoria) {
		this.listCategoria = listCategoria;
	}

	public String getValor() {
		return valor;
	}

	public void setValor(String valor) {
		this.valor = valor;
	}

	public String getCampo() {
		return campo;
	}

	public void setCampo(String campo) {
		this.campo = campo;
	}

	public String getCodigo() {
		codigo = new SubcategoriaDao().proximoCodigo();
		return codigo;
	}

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

	public UIData getObjSubcategoria() {
		return objSubcategoria;
	}

	public void setObjSubcategoria(UIData objSubcategoria) {
		this.objSubcategoria = objSubcategoria;
	}

	public String getCodigoCategoria() {
		return codigoCategoria;
	}

	public void setCodigoCategoria(String codigoCategoria) {
		this.codigoCategoria = codigoCategoria;
	}
}

JSP

[code]<%@taglib uri=“http://java.sun.com/jsf/core” prefix=“f”%>
<%@taglib uri=“http://java.sun.com/jsf/html” prefix=“h”%>
<%@taglib uri=“http://richfaces.ajax4jsf.org/rich” prefix=“rich”%>
<%@taglib uri=“http://richfaces.org/a4j” prefix=“a4j”%>

Voltar   Logout
<div id="title" align="center"><h:outputText value="Lista de Subcategorias" /></div>

<!-- Formulario de Pesquisa -->

<div id="page" align="center"><h:form>
    <h:panelGrid columns="3">
        <h:outputText value="Valor: " />
        <h:inputText id="valor" value="#{subcategoriaAction.valor}" maxlength="40" />
        <h:message for="valor" />
        <h:outputText value="Campo: " />
        <h:panelGrid columns="3">
            <h:selectOneRadio id="campos" value="#{subcategoriaAction.campo}">
                <f:selectItem itemValue="codigo" itemLabel="Código" />
                <f:selectItem itemValue="descricao" itemLabel="Descrição" />
                <f:selectItem itemValue="subnivel" itemLabel="Subnível" />
                <f:selectItem itemValue="categoria" itemLabel="Categoria" />
            </h:selectOneRadio>
        </h:panelGrid>
        <h:message for="campos" />
    </h:panelGrid>
    <h:commandButton action="#{subcategoriaAction.pesquisa}" value="Pesquisar" />
</h:form></div>

<!-- Listagem de Subcategorias -->

<div id="page" align="center"><h:form>
    <rich:dataTable id="subcategoria" value="#{subcategoriaAction.listSubcategoria}"
        rendered="#{not empty subcategoriaAction.listSubcategoria}"
        binding="#{subcategoriaAction.objSubcategoria}" var="subcategoriaData" rows="10"
        border="1" width="50%">
        <f:facet name="header">
            <rich:columnGroup>
                <h:column>
                    <h:outputText value="Código" />
                </h:column>
                <h:column>
                    <h:outputText value="Descrição" />
                </h:column>
                <h:column>
                    <h:outputText value="Categoria" />
                </h:column>
                <h:column>
                    <h:outputText value="Subnivel" />
                </h:column>
                <h:column>
                    <h:outputText value="Alterar" />
                </h:column>
                <h:column>
                    <h:outputText value="Deletar" />
                </h:column>
            </rich:columnGroup>
        </f:facet>
        <h:column>
            <h:outputText value="#{subcategoriaData.codigo}" />
        </h:column>
        <h:column>
            <h:outputText value="#{subcategoriaData.descricao}" />
        </h:column>
        <h:column>
            <h:outputText value="#{subcategoria.Data.categoria}" />
        </h:column>
        <h:column>
            <h:outputText value="#{subcategoriaData.subnivel}" />
        </h:column>
        <h:column>
            <h:commandButton action="#{subcategoriaAction.altera}" image="imagens/update.gif"
                style="height: 19px; width: 18px" />
        </h:column>
        <h:column>
            <h:commandButton action="#{subcategoriaAction.delete}" image="imagens/error.gif"
                style="height: 19px; width: 18px" />
        </h:column>
        <f:facet name="footer">
            <rich:datascroller for="subcategoria"/>
        </f:facet>
    </rich:dataTable>
</h:form>

<center><h:outputLink value="GravaSubcategoria.jsf">
    <h:outputText value="Nova Subcategoria" />
</h:outputLink></center>

</div>
<div id="footer" align="right"><h:outputLink value="imprimir.jsf">
    <h:outputText value="Imprimir" />
</h:outputLink> &emsp; <h:outputLink value="MenuPrincipal.jsf">
    <h:outputText value="Home" />
</h:outputLink></div>
</body>

</f:view>

[/code]

eu nem li tudo pq fallando sério, tanto código assim na tela desempolga, enfim…
você já tentou converter a lista pra static? esse tpo de erro acontece de vez em quando, às vezes (eu não me lembro em que momentos) a lista deve pertencer à classe e não à instância. se isso resolver avisa, ok?
abs

estatico tambem não funciona, e também as outras classes que eu estou usando a datatable estão exibindo os dados tranquilamente. vou postar o codigo apenas dos objetos q estou usando. 8)

package br.com.docfacil.docfacilweb.control;
action
public class SubcategoriaAction {
	private List<Subcategoria> listSubcategoria = new ArrayList<Subcategoria>();
	
        public List<Subcategoria> getListSubcategoria() {
		if (valor.equals(""))
			listSubcategoria = new SubcategoriaDao().list();
		return listSubcategoria;
	}

	public void setListSubcategoria(List<Subcategoria> listSubcategoria) {
		this.listSubcategoria = listSubcategoria;
	}

consulta no DAO: isso ja testei varias vezes e esta funcionando tranquilamente.

	public List<Subcategoria> list() {
		Query q = s.createQuery("from Subcategoria");
		List<Subcategoria> listaSubcategoria = q.list();
		return listaSubcategoria;
	}

datatable na JSP

<h:form>
        <rich:dataTable var="subcategoriaData" id="subcategoria" value="#{subcategoriaAction.listSubcategoria}" binding="#{subcategoriaAction.objSubcategoria}"
            rendered="#{not empty subcategoriaAction.listSubcategoria}" rows="10" border="1" >
            <f:facet name="header">
                <rich:columnGroup>
                    <h:column>
                        <h:outputText value="Código" />
                    </h:column>
                    <h:column>
                        <h:outputText value="Descrição" />
                    </h:column>
                    <h:column>
                        <h:outputText value="Categoria" />
                    </h:column>
                    <h:column>
                        <h:outputText value="Subnivel" />
                    </h:column>
                    <h:column>
                        <h:outputText value="Alterar" />
                    </h:column>
                    <h:column>
                        <h:outputText value="Deletar" />
                    </h:column>
                </rich:columnGroup>
            </f:facet>
            <h:column>
                <h:outputText value="#{subcategoriaData.codigo}" />
            </h:column>
            <h:column>
                <h:outputText value="#{subcategoriaData.descricao}" />
            </h:column>
            <h:column>
                <h:outputText value="#{subcategoriaData.categoria}" />
            </h:column>
            <h:column>
                <h:outputText value="#{subcategoriaData.subnivel}" />
            </h:column>
            <h:column>
                <h:commandButton action="#{subcategoriaAction.altera}" image="imagens/update.gif"
                    style="height: 19px; width: 18px" />
            </h:column>
            <h:column>
                <h:commandButton action="#{subcategoriaAction.delete}" image="imagens/error.gif"
                    style="height: 19px; width: 18px" />
            </h:column>
            <f:facet name="footer">
                <rich:datascroller for="subcategoria" />
            </f:facet>
        </rich:dataTable>
        
    </h:form>

Problema resolvido. o problema era que estava instanciando a variavel UIData. para manipular o rich:dataTable.

e por algum motivo que ainda não sei qual, não pode ser instanciado.

Atenciosamente.