[RESOLVIDO] Primefaces 3.2 c/ colunas dinâmicas

Peguei o showcase la do primefaces e fiz meu datatable assim:

<p:dataTable value="#{testesBean.listaTodasPdj}" var="pdj"> <p:columns value="#{testesBean.colunas}" var="coluna" columnIndexVar="index"> <f:facet name="header"> <h:outputText value="#{coluna.header}"/> </f:facet> <h:outputText value="#{pdj[coluna.property]}"/> </p:columns> </p:dataTable>

e no meu bean ta a mesma idéia la do showcase também


private String columnTemplate = "diretoria levantamentos efetivacoes solicitEfetivacoes solicitLevantamentos";

public void criarColunasDinamicas() {  
        String[] columnKeys = columnTemplate.split(" "); 
                     
		colunas.clear();        
          
        for(String columnKey : columnKeys) {  
            String key = columnKey.trim();  
              
            colunas.add(new ColumnModel(columnKey.toUpperCase(), columnKey));  
        }  
    }  

static public class ColumnModel implements Serializable {  
		  
        private String header;  
        private String property;  
  
        public ColumnModel(String header, String property) {  
            this.header = header;  
            this.property = property;  
        }  
  
        public String getHeader() {  
            return header;  
        }  
  
        public String getProperty() {  
            return property;  
        }  
    }  

o que acontece, é que eu queria fazer tudo isso dinamicamente, e não ter um header estático no meu bean…

digamos que eu tenha uma classe de Gujeiros, nesta classe eu tenho 3 atributos:
String usuario
String senha
Integerlevel

se eu crio uma list gujeiros, através desta lista, eu consigo saber quais atributos eu tenho dentro da minha classe?
eu queria algum tipo de busca para me retornar as Strings: “usuario senha level”, para ser meu ‘columnTemplate’ dinâmico

Cara pelo que entendi você quer ler os atributos da classe…

Segue um artigo muito bom aque do GUJ

http://www.guj.com.br/articles/10

Espero ter ajudado

perfeito! muito obrigado!!

Acho que o problema já foi resolvido, mas tenho uma solução mais pratica.

Supondo que eu tenha uma classe Colaborador e dentro dela uma lista Experiencia.

Bem, se quiser exibir a descrição da experiencia no grid, na classe colaborador crio getExperienciaDescrao:

public String getExperienciaDescrao(){
		return this.experiencia.getDescricao();
}

Na propriedade da coluna (columnKey) coloco experienciaDescricao

Uso desta forma e funciona perfeitamente