Colunas dinâmicas num <rich:dataTable/>

Fala pessoal!!

Seguinte, tinha deixado um post com um problema q to tendo com dataTable do richfaces, mas como ninguém respondeu, preferi criar outro post. O moderador pode apagar o outro, pois aki vou me expressar melhor:

Tenho uma tela onde o usuário seleciona as colunas que deseja ver num datatable. Outro filtro é a data em q deseja ver a tabela (tipo, quero ver os resultados entre ontem e hj).

Meu problema: como faço pra recuperar os headers e os valores do campo??? Aliás, vi vários lugares onde ensinava como criar os datatable com os headers e campos definidos, mas não peguei mto a manha do negócio, então se alguem souber de algum tutorial bacana eu agradeço demais.

Vlw pessoal!!!

Estou com a mesma necessidade vc já fez algum código? preciso que o usuário escolha os campos a serem apresentados em outra tabela e esta tabela ser renderizada com as colunas escolhidas…

Kra, eu até tinha feito, mas não deu certo, tava tentando chamar os headers e os campos com uma list só, e não dava nada.

Eu até comecei a dar uma olhada num tutorial q eu achei na web, onde vc setta o dataTable no dedão msm, dentro do MB, e nem é com richFaces, e sim com o <h:dataTable/>. Tô vendo aki se dá pra utilizar a ideia.

Se vc quiser dar uma olhada é esse: http://balusc.blogspot.com/2006/06/using-datatables.html#PopulateDynamicDatatable

Se vc conseguir algum progresso coloca aí pra nóis!!! hehe

E se alguém mais puder dar uma força pra nós aí tbm agradeço d+!!!

Vlw!!!

Kra, esquece oq eu falei acima. Esse exemplo não funciona.

Se vc tiver alguma nova ideia manda pra nós aí!!

Vlw!!!

<rich:column id=“meuId” visible="#{chama.a.funcao.que.retorne.true.ou.false}">

dessa forma ela aparece ou nao dependendo se a pessoa selecionou true ou false numa outra tela.

Vou testar aki e posto o resultado!!!

Valeu duducordeiro_!!!

Mas neste caso teria que deixar todas as colunas possíveis já prontas e só depois renderizar ou nào certo?

Amigos fiz a coisa o que me sugeriram deu cert quanto a visibilidade da coluna na tabela porém a pagina necessita de nova de novo reload para que funcione…
Se puderem dar uma ajuda…

<?xml version='1.0' encoding='ISO-8859-1' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:a4j="http://richfaces.org/a4j"
      xmlns:rich="http://richfaces.org/rich"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html">
    <ui:composition>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
            <title>Titulo da pagina aqui</title>
            <link href="css/default.css" rel="stylesheet" type="text/css" />
            <link href="css/estilos.css" rel="stylesheet" type="text/css" />
        </head>
        <body>
            <div id="fundo">
                <img name="topo" id="topo" src="imagens/afacabecalho.gif" alt="imagem afa"/>
                <div id="cabecalho" class="especial">
                    <h:form id="fa">
                        <h:panelGrid columns="7">
                            <label jsfc="h:outputLabel" for="esquadrao">Esquadrões:</label>
                            <h:selectOneMenu id="esquadrao"  value="#{consulta.turmaSelecionada}" converterMessage="Esquadrões: Não estou conseguindo">
                                <f:selectItems  value="#{consulta.mapaTurma}" />
                            </h:selectOneMenu>
                            <label jsfc="h:outputLabel" for="quadro">Quadro:</label>
                            <h:selectOneMenu id="quadro"  value="#{consulta.quadro}" converterMessage="Situação: Não estou conseguindo">
                                <f:selectItems  value="#{consulta.mapaQuadro}" />
                            </h:selectOneMenu>
                            <h:commandButton value="Buscar"  type="submit" styleClass="ffatd" action="#{consulta.buscar}"/>
                            <h:commandButton value="voltar"  styleClass="ffatd" action="#{consulta.voltar}" immediate="true"/>
                            <h:commandButton value="Limpar seleção"  styleClass="ffatd" action="#{consulta.limpar}" immediate="true"/>
                        </h:panelGrid>
                        <h:panelGrid columns="2">
                            <rich:dataTable value="#{consulta.lista}" var="cap" id="table"
                                            width="150px" columns="1" >
                                <h:column>
                                    <f:facet name="header" >
                                        <h:outputText value="Atributos"/>
                                    </f:facet>
                                    <rich:toolTip>
                                        <span>Clique no link para inserir o atributo na pesquisa:</span>
                                    </rich:toolTip>
                                    <a4j:commandLink value="#{cap}" action="#{consulta.inserirSelection}" reRender="va"/>
                                    <!--<h:commandLink value="#{cap}" action="#{consulta.inserirSelection}" >
                                        <a4j:support reRender="va,fa,table2" event="onclick" ajaxSingle="true"/>
                                    </h:commandLink>-->
                                </h:column>
                            </rich:dataTable>
                            <a4j:outputPanel id="va">
                                <rich:extendedDataTable value="#{consulta.consulta}" var="cap" id="table2" width="700px">
                                    <rich:column visible="#{consulta.nguerra}" sortable="true" sortBy="#{cap.nguerra}" filterBy="#{cap.nguerra}" filterEvent="onkeyup">
                                        <f:facet name="header">
                                            <h:outputText value="N. Guerra" />
                                        </f:facet>
                                        <h:outputText value="#{cap.nguerra}" />
                                    </rich:column>
                                    <rich:column visible="#{consulta.numeroAfa}" sortable="true" sortBy="#{cap.numeroAfa}" filterBy="#{cap.numeroAfa}" filterEvent="onkeyup">
                                        <f:facet name="header">
                                            <h:outputText value="Número" />
                                        </f:facet>
                                        <h:outputText value="#{cap.numeroAfa}" />
                                    </rich:column>
                                    <rich:column width="200px" visible="#{consulta.ncompleto}" sortable="true" sortBy="#{cap.ncompleto}" filterBy="#{cap.ncompleto}" filterEvent="onkeyup">
                                        <f:facet name="header">
                                            <h:outputText value="N. Completo" />
                                        </f:facet>
                                        <h:outputText value="#{cap.ncompleto}" />
                                    </rich:column>
                                    <rich:column sortable="true" visible="#{consulta.quadros}" sortBy="#{cap.quadro}" filterBy="#{cap.quadro}" filterEvent="onkeyup">
                                        <f:facet name="header">
                                            <h:outputText value="Quadro" />
                                        </f:facet>
                                        <h:outputText value="#{cap.quadro}" />
                                    </rich:column>
                                    <rich:column sortable="true" visible="#{consulta.cpf}" sortBy="#{cap.cpf}" label="CPF" filterBy="#{cap.cpf}" filterEvent="onkeyup">
                                        <f:facet name="header">
                                            <h:outputText value="CPF" />
                                        </f:facet>
                                        <h:outputText value="#{cap.cpf}" />
                                    </rich:column>
                                    <rich:column sortable="true" visible="#{consulta.trigrama}" sortBy="#{cap.trigrama}" label="Trigrama" filterBy="#{cap.trigrama}" filterEvent="onkeyup">
                                        <f:facet name="header">
                                            <h:outputText value="Trigrama" />
                                        </f:facet>
                                        <h:outputText value="#{cap.trigrama}" />
                                    </rich:column>
                                    <rich:column sortable="true" visible="#{consulta.merito}" sortBy="#{cap.nomeMerito}" label="Mérito" filterBy="#{cap.nomeMerito}" filterEvent="onkeyup">
                                        <f:facet name="header">
                                            <h:outputText value="Mérito" />
                                        </f:facet>
                                        <h:outputText value="#{cap.nomeMerito}" />
                                    </rich:column>
                                    <rich:column sortable="true" visible="#{consulta.identidade}" sortBy="#{cap.identidade}" label="Identidade" filterBy="#{cap.identidade}" filterEvent="onkeyup">
                                        <f:facet name="header">
                                            <h:outputText value="Identidade" />
                                        </f:facet>
                                        <h:outputText value="#{cap.identidade}" />
                                    </rich:column>
                                    <rich:column sortable="true" visible="#{consulta.sexo}" sortBy="#{cap.nomeSexo}" label="Sexo" filterBy="#{cap.nomeSexo}" filterEvent="onkeyup">
                                        <f:facet name="header">
                                            <h:outputText value="Sexo" />
                                        </f:facet>
                                        <h:outputText value="#{cap.nomeSexo}" />
                                    </rich:column>
                                    <rich:column sortable="true" visible="#{consulta.datadesl}" sortBy="#{cap.datadesligado}" label="Data desligado" filterBy="#{cap.datadesligado}" filterEvent="onkeyup">
                                        <f:facet name="header">
                                            <h:outputText value="Data desligado" />
                                        </f:facet>
                                        <h:outputText value="#{cap.datadesligado}" />
                                    </rich:column>
                                    <rich:column sortable="true" visible="#{consulta.databol}" sortBy="#{cap.tipoDesligado}" label="Data  Bol.desligado" filterBy="#{cap.tipoDesligado}" filterEvent="onkeyup">
                                        <f:facet name="header">
                                            <h:outputText value="Data  Bol.desligado" />
                                        </f:facet>
                                        <h:outputText value="#{cap.tipoDesligado}" />
                                    </rich:column>
                                    <rich:column sortable="true" visible="#{consulta.bol}" sortBy="#{cap.boldesligado}" label="Bol.desligado" filterBy="#{cap.boldesligado}" filterEvent="onkeyup">
                                        <f:facet name="header">
                                            <h:outputText value="Bol.desligado" />
                                        </f:facet>
                                        <h:outputText value="#{cap.boldesligado}" />
                                    </rich:column>
                                    <rich:column sortable="true" visible="#{consulta.desligado}" sortBy="#{cap.tipoDesligado}" label="Tipo Desligado" filterBy="#{cap.tipoDesligado}" filterEvent="onkeyup">
                                        <f:facet name="header">
                                            <h:outputText value="Tipo Desligado" />
                                        </f:facet>
                                        <h:outputText value="#{cap.tipoDesligado}" />
                                    </rich:column>
                                    <rich:column sortable="true" visible="#{consulta.nacionalidade}" sortBy="#{cap.nacionalidade.nome}" label="Nacionalidade" filterBy="#{cap.nacionalidade.nome}" filterEvent="onkeyup">
                                        <f:facet name="header">
                                            <h:outputText value="Nacionalidade" />
                                        </f:facet>
                                        <h:outputText value="#{cap.nacionalidade.nome}" />
                                    </rich:column>
                                    <rich:column sortable="true" visible="#{consulta.turmaAula}" sortBy="#{cap.turmaAula.nome}" label="Turma Aula" filterBy="#{cap.turmaAula.nome}" filterEvent="onkeyup">
                                        <f:facet name="header">
                                            <h:outputText value="Turma Aula" />
                                        </f:facet>
                                        <h:outputText value="#{cap.turmaAula.nome}" />
                                    </rich:column>
                                </rich:extendedDataTable>
                            </a4j:outputPanel>
                        </h:panelGrid>
                    </h:form>
                </div>
            </div>
        </body>
    </ui:composition>
</html>

bean

public class Consulta {

    @Resource
    private AlunosFacade alunosFacade;
    @Resource
    private TurmaFacade turmaFacade;
    private Map<String, Object> mapa;
    private Map<String, Object> mapaTurma;
    private Long turmaSelecionada;
    private String quadro;
    private DataModel consulta;
    private DataModel lista;    
    private List<String>selecionada;
    private Map<String, Object> param;
    private String query;    
    private boolean nguerra;
    private boolean numeroAfa;
    private boolean ncompleto;
    private boolean quadros;
    private boolean cpf;
    private boolean trigrama;
    private boolean sexo;
    private boolean merito;
    private boolean identidade;
    private boolean datadesl;
    private boolean databol;
    private boolean bol;
    private boolean desligado;
    private boolean nacionalidade;
    private boolean turmaAula;

    public Consulta() {
    }

    public String buscar() {
        StringBuilder sb = new StringBuilder("SELECT f FROM Alunos f ");
        param = new HashMap<String, Object>();
        boolean ja=false;
        if (!quadro.equals("")) {
            sb.append(" where (f.quadro = :quadro) ");
            param.put("quadro", quadro);
            ja=true;
        }

        if (turmaSelecionada > 0) {
            if(ja)sb.append(" AND (f.turma= :tur) ");
            else sb.append(" where (f.turma= :tur) ");
            intraer.afa.model.Turma t = turmaFacade.obterPorId(turmaSelecionada);
            param.put("tur", t);
        }
        query = sb.toString();
        return null;
    }

    /**
     * @return the alunosFacade
     */
    public AlunosFacade getAlunosFacade() {
        return alunosFacade;
    }

    /**
     * @param alunosFacade the alunosFacade to set
     */
    public void setAlunosFacade(AlunosFacade alunosFacade) {
        this.alunosFacade = alunosFacade;
    }

    /**
     * @return the mapa
     */
    public Map<String, Object> getMapa() {
        return mapa;
    }

    /**
     * @param mapa the mapa to set
     */
    public void setMapa(Map<String, Object> mapa) {
        this.mapa = mapa;
    }

    public Map<String, Object> getMapaQuadro() {
        setMapa(new LinkedHashMap<String, Object>());
        getMapa().put("Todos", "");
        getMapa().put("CFOAV", "CFOAV");
        getMapa().put("CFOINT", "CFOINT");
        getMapa().put("CFOINF", "CFOINF");
        return getMapa();
    }

    public DataModel getAtributosSelecao() {
        List<String>li=new ArrayList<String>();
        String[] or={"N. Guerra","Número","N. Completo","Quadro","CPF","Trigrama","Mérito","Identidade","Sexo","Data desligado","Data  Bol.desligado","Bol.desligado","Tipo Desligado",
        "Nacionalidade","Turma Aula"};
        for(String s:or){
            li.add(s);
        }
        DataModel m=new ListDataModel(li);
        return m;
    }

    public String voltar(){
        //selecionada=new ArrayList<String>();
        return "ccaer";
    }

    public String limpar(){
        selecionada=new ArrayList<String>();
        return null;
    }

    public String inserirSelection(){        
        String s=(String)lista.getRowData();
         if(selecionada==null){
            selecionada=new ArrayList<String>();
            selecionada.add(s);
        }
        else {
            selecionada.add(s);
        }
        //ajuste param
        if(selecionada!=null && selecionada.contains("N. Guerra"))nguerra= true;
        else nguerra= false;
        if(selecionada!=null && selecionada.contains("Número"))numeroAfa= true;
        else numeroAfa= false;
        if(selecionada!=null && selecionada.contains("N. Completo")) ncompleto= true;
        else ncompleto= false;
        if(selecionada!=null && selecionada.contains("Quadro")) quadros= true;
        else quadros= false;
        if(selecionada!=null && selecionada.contains("CPF")) cpf= true;
        else cpf= false;
        if(selecionada!=null && selecionada.contains("Trigrama")) trigrama= true;
        else trigrama= false;
        if(selecionada!=null && selecionada.contains("Mérito")) merito= true;
        else merito= false;
        if(selecionada!=null && selecionada.contains("Identidade")) identidade= true;
        else identidade= false;
        if(selecionada!=null && selecionada.contains("Sexo")) sexo= true;
        else sexo= false;
        if(selecionada!=null && selecionada.contains("Data desligado")) datadesl= true;
        else datadesl= false;
        if(selecionada!=null && selecionada.contains("Data  Bol.desligado")) databol= true;
        else databol= false;
        if(selecionada!=null && selecionada.contains("Bol.desligado")) bol= true;
        else bol= false;
        if(selecionada!=null && selecionada.contains("Tipo Desligado")) desligado= true;
        else desligado= false;
        if(selecionada!=null && selecionada.contains("Nacionalidade")) nacionalidade= true;
        else nacionalidade= false;
        if(selecionada!=null && selecionada.contains("Turma Aula")) turmaAula= true;
        else turmaAula= false;
        return null;
    }

    public void initTurma() {
        List<intraer.afa.model.Turma> li = getTurmaFacade().obterPorCcaer();
        mapaTurma =new TreeMap<String, Object>();
        mapaTurma.put("Todas", 0l);
        for (intraer.afa.model.Turma t : li) {
            mapaTurma.put(t.getNome(), t.getId());
        }

    }

    /**
     * @return the mapaTurma
     */
    public Map<String, Object> getMapaTurma() {
        if (mapaTurma == null) {
            initTurma();
        }

        return mapaTurma;
    }

    /**
     * @param mapaTurma the mapaTurma to set
     */
    public void setMapaTurma(Map<String, Object> mapaTurma) {
        this.mapaTurma = mapaTurma;
    }

    /**
     * @return the turmaSelecionada
     */
    public Long getTurmaSelecionada() {
        return turmaSelecionada;
    }

    /**
     * @param turmaSelecionada the turmaSelecionada to set
     */
    public void setTurmaSelecionada(Long turmaSelecionada) {
        this.turmaSelecionada = turmaSelecionada;
    }

    /**
     * @return the quadro
     */
    public String getQuadro() {
        return quadro;
    }

    /**
     * @param quadro the quadro to set
     */
    public void setQuadro(String quadro) {
        this.quadro = quadro;
    }

    /**
     * @return the consulta
     */
    public DataModel getConsulta() {
        consulta=new ListDataModel();
        if(query!=null){
            consulta=new ListDataModel(alunosFacade.obterPorWhere(query, param));
        }
        return consulta;
    }

    /**
     * @param consulta the consulta to set
     */
    public void setConsulta(DataModel consulta) {
        this.consulta = consulta;
    }

    /**
     * @return the turmaFacade
     */
    public TurmaFacade getTurmaFacade() {
        return turmaFacade;
    }

    /**
     * @param turmaFacade the turmaFacade to set
     */
    public void setTurmaFacade(TurmaFacade turmaFacade) {
        this.turmaFacade = turmaFacade;
    }

    /**
     * @return the param
     */
    public Map<String, Object> getParam() {
        return param;
    }

    /**
     * @param param the param to set
     */
    public void setParam(Map<String, Object> param) {
        this.param = param;
    }

    /**
     * @return the query
     */
    public String getQuery() {
        return query;
    }

    /**
     * @param query the query to set
     */
    public void setQuery(String query) {
        this.query = query;
    }

    

    /**
     * @return the lista
     */
    public DataModel getLista() {
        if(lista==null){
            lista=getAtributosSelecao();
        }
        return lista;
    }

    /**
     * @param lista the lista to set
     */
    public void setLista(DataModel lista) {
        this.lista = lista;
    }   

    /**
     * @return the selecionada
     */
    public List<String> getSelecionada() {
        return selecionada;
    }

    /**
     * @param selecionada the selecionada to set
     */
    public void setSelecionada(List<String> selecionada) {
        this.selecionada = selecionada;
    }

    public int getQtdeSelecionada(){
        if(selecionada!=null){
            return selecionada.size();
        }
        else return 0;
    }

    /**
     * @return the nguerra
     */
    public boolean isNguerra() {        
        return nguerra;
    }

    /**
     * @param nguerra the nguerra to set
     */
    public void setNguerra(boolean nguerra) {
        this.nguerra = nguerra;
    }

    /**
     * @return the numeroAfa
     */
    public boolean isNumeroAfa() {        
        return numeroAfa;
    }

    /**
     * @param numeroAfa the numeroAfa to set
     */
    public void setNumeroAfa(boolean numeroAfa) {
        this.numeroAfa = numeroAfa;
    }

    /**
     * @return the ncompleto
     */
    public boolean isNcompleto() {       
        return ncompleto;
    }

    /**
     * @param ncompleto the ncompleto to set
     */
    public void setNcompleto(boolean ncompleto) {
        this.ncompleto = ncompleto;
    }

    /**
     * @return the quadros
     */
    public boolean isQuadros() {        
        return quadros;
    }

    /**
     * @param quadros the quadros to set
     */
    public void setQuadros(boolean quadros) {
        this.quadros = quadros;
    }

    /**
     * @return the cpf
     */
    public boolean isCpf() {        
        return cpf;
    }

    /**
     * @param cpf the cpf to set
     */
    public void setCpf(boolean cpf) {
        this.cpf = cpf;
    }

    /**
     * @return the trigrama
     */
    public boolean isTrigrama() {        
        return trigrama;
    }

    /**
     * @param trigrama the trigrama to set
     */
    public void setTrigrama(boolean trigrama) {
        this.trigrama = trigrama;
    }

    /**
     * @return the sexo
     */
    public boolean isSexo() {
        return sexo;
    }

    /**
     * @param sexo the sexo to set
     */
    public void setSexo(boolean sexo) {
        this.sexo = sexo;
    }

    /**
     * @return the merito
     */
    public boolean isMerito() {
        return merito;
    }

    /**
     * @param merito the merito to set
     */
    public void setMerito(boolean merito) {
        this.merito = merito;
    }

    /**
     * @return the identidade
     */
    public boolean isIdentidade() {
        return identidade;
    }

    /**
     * @param identidade the identidade to set
     */
    public void setIdentidade(boolean identidade) {
        this.identidade = identidade;
    }

    /**
     * @return the datadesl
     */
    public boolean isDatadesl() {
        return datadesl;
    }

    /**
     * @param datadesl the datadesl to set
     */
    public void setDatadesl(boolean datadesl) {
        this.datadesl = datadesl;
    }

    /**
     * @return the databol
     */
    public boolean isDatabol() {
        return databol;
    }

    /**
     * @param databol the databol to set
     */
    public void setDatabol(boolean databol) {
        this.databol = databol;
    }

    /**
     * @return the bol
     */
    public boolean isBol() {
        return bol;
    }

    /**
     * @param bol the bol to set
     */
    public void setBol(boolean bol) {
        this.bol = bol;
    }

    /**
     * @return the desligado
     */
    public boolean isDesligado() {
        return desligado;
    }

    /**
     * @param desligado the desligado to set
     */
    public void setDesligado(boolean desligado) {
        this.desligado = desligado;
    }

    /**
     * @return the nacionalidade
     */
    public boolean isNacionalidade() {
        return nacionalidade;
    }

    /**
     * @param nacionalidade the nacionalidade to set
     */
    public void setNacionalidade(boolean nacionalidade) {
        this.nacionalidade = nacionalidade;
    }

    /**
     * @return the turmaAula
     */
    public boolean isTurmaAula() {
        return turmaAula;
    }

    /**
     * @param turmaAula the turmaAula to set
     */
    public void setTurmaAula(boolean turmaAula) {
        this.turmaAula = turmaAula;
    }
}

quanto a mensagem do Andradona, sim, porque se você deseja dar a opção ao usuario de aparecer ou não a coluna, ela precisa já estar preparada para aparecer( todas as colunas).

:wink:

Quanto a sua segunda pergunta, não sei se entendi bem até mesmo porque eu so novo no JSF e nunca programei pra web, mas no meu projeto eu utilizo o reRender que ao meu ver parece funcionar como um atualizar do que vc deseja.

Mudando um pouco de assunto, vi que vc utiliza o combo do HTML, o rich tem combo tb que é o <rich:comboBox… eu acho ele bem melhor do que o do HTML pelo fato de ter uma estética melhor e vc poder digitar o inicio da palavra que ele busca os resultados.

concordo com o duducordeiro_ sobre o reRender, é uma santa mão na roda!!!

E consegui mandar as colunas com a solução do duducordeiro_, mas agora não to conseguindo mandar minha lista pro datatable!!!

Já tentei com ListDataModel, DataModel, etc., e nada!!!

Como faço pra mandar uma lista q recupero de uma pesquisa no banco pra minha dataTable???

Vlw!!!

Aki, o erro q tá dando é esse:

Cannot convert org.richfaces.component.html.HtmlDataTable of type class org.richfaces.component.html.HtmlDataTable to class javax.faces.model.DataModel

Em vários fóruns eu vi q usam o tal do DataModel pra popular o dataTable, mas aki o JBoss não converte e dá pau.

o método q retorna o DataModel:

public DataModel setTabelaFluxo(){
	try{
		setDataModel(new ListDataModel(getDataList()));
	}catch (Exception e) {
		System.err.println("erro!!!");
	}
	return getDataModel();
}

esse getDataList() retorna minha pesquisa do banco, e de acordo com o debug do eclipse, tá retornando certinho.

Se alguém souber como q faz essa joça funfar eu agradeço demais!!! Hehe

Vlw!!

Vou te mostrar como eu fiz com o DataModel deuma forma generica:

no controlador:

private GenericBean<T> persistencia ;  // Eu usei Generics
private List<T> lista;
private DataModel lstDataModel;

  public String metodoDePesquisa (){
	List<String> listaCampos = new ArrayList<String>();
	List<Object> listaValores = new ArrayList();
            lista = persistencia.getByNomeIlike(listaValores, listaCampos );  //recupero todos os dados do banco
	lstDataModel = new ListDataModel( lista );    //do um new DataModel passando por parametro o meu List que eu recuperei do banco e o lst eh qu .                                                                                 // receber, e no teu JSP tu acessa ele.
           return "String para navegacao";
}

public DataModel getListaDataModel() {
	return lstDataModel;
}

//Quando vc clicar no botao de pesquisar ou acionar a pesquisa, ele chama o metodo de pesquisa, e a tua dataTable eh que vai chamar o lstDataModel

no meu jsp fica assim:

		<rich:dataTable value="#{controleRegiao.listaDataModel}" var="regiao"
			width="100%" columnClasses="center" rows="15" reRender="Listagem">

                     <aqui vai as colunas que desejar>

                  </rich:data....>

acho que dessa forma deve funcionar

Kra, eu to fazendo tipo assim tbm. Eu até consegui montar o DataModel direitinho, mas agora dá outro erro estranho q não to achando no Google:

javax.servlet.ServletException: org.ajax4jsf.model.SequenceRange cannot be cast to org.richfaces.model.ScrollableTableDataRange

Já aconteceu contigo???

Pensei q era por causa dos valores Double q eu recupero, mas não é.

Vlw!!!

nao que eu lembre… ele diz a linha do JSP que ta dando o erro?

Esse é o problema!! Ele não fala nada!!

Eu até brinquei com um amigo meu q o eclipse podia ter debug da pagina jsp ou xhtml!! hehe

Vou fazer o seguinte: pra deixar o fórum organizado, vou fazer um novo tópico pra saber q porquêra é essa.

Mas se alguém aí tiver mais ideias sobre meu problema manda aí!! hehe

Vlw pessoal!!!

–editado–

O novo post é esse galera.

Flw!!