[RESOLVIDO] Primefaces dynamic columns com list dentro de list

3 respostas
A

Tenho um objeto que possui alguns atributos simples e algumas listas de objetos
Os atributos eu consigo pegar e montar a tabela… mas as listas não…

este é meu xhtml

<p:dataTable id="tabela" value="#{reportBackingBean.genericModels}"
					var="genericModel" rendered="#{reportBackingBean.showTable}">
					<p:columns var="column" value="#{reportBackingBean.columns}"
						columnIndexVar="colIndex">
						<f:facet name="header">
						#{column.header}
					</f:facet>
					#{genericModel[column.property]}
				</p:columns>
				</p:dataTable>

e aqui a parte onde a column da erro…

columns.add(new ColumnModel("Area", "areas.nome"));

O mais perto que cheguei for colocando apenas

columns.add(new ColumnModel("Area", "areas"));

Onde aparece model.Area@1302be4
É possível fazer isto pelo prime?
Senão… alguem conhece algum workaround (pra nao dizer gambiarra)

3 Respostas

D

Olá,

Estou com um problema muito parecido com o seu.
Você poderia mostrar sua classe bean?

Meu xhtml é esse:

<p:dataTable id="tabelaQuantitativoExterna" emptyMessage="Busca retornou nenhum resultado" var="especialidades" value="#{exibicaoQuantitativoPCBean.listaEspecialidades}"  style="width:1000px; height:1000px;">
	   		
			<p:column>
				<f:facet name="header">
					<h:outputText value="#{exibicaoQuantitativoPCBean.dataCompleta}" />
				</f:facet>
					#{especialidades.sigla}
			</p:column>
	
		 <p:columns  value= "#{exibicaoQuantitativoPCBean.listaExibida}" var="quantitativo" columnIndexVar="colIndex">   
            <f:facet name="header">   
                #{quantitativo.hospital.sigla}   
            </f:facet>   
                   #{quantitativo.listaQuantitativo[colIndex].quantidade}
        </p:columns>  
	
		</p:dataTable>

O problema é que não consigo ler todas as posições da lista que está dentro de outra lista. Como você faz isso?
Eu tentei fazer isso, usando: quantitativo.listaQuantitativo[colIndex]. Eu vi que você utiliza genericModel[column.property].

A

Não entendi mto bem…
Mas eu estou tentando ainda descobrir uma maneira de colocar uma lista dentro da lista, utilizando uma tabela dinamica…

E

Consegui fazer listar mas não gostei muito do código. Deve ter algo mais simples, mas emfim …

<p:dataTable var="plc" value="#{dataTableMB.listaPlano}">                      

                <p:column sortBy="#{plc.nome}">
                    <f:facet name="header">Plano de Conta</f:facet>
                    <h:outputText value="#{plc.nome}"/>
                </p:column>                

                <p:columns value="#{dataTableMB.columns}"
                           columnIndexVar="ind"
                           var="column">  
                    
                    <f:facet name="header">  
                        #{column.header}
                    </f:facet>  

                    #{column.retornaProperty(plc)}
                    
                </p:columns>  

            </p:dataTable>
columns.add(new ColumnModel(Mes[0].toString(), 0));
columns.add(new ColumnModel(Mes[1].toString(), 1));
columns.add(new ColumnModel(Mes[2].toString(), 2)); 


static public class ColumnModel implements Serializable {

        private String header;
        private int mes;

        public ColumnModel(String header, int mes) {
            this.header = header;
            this.mes = mes;
        }

        public String getHeader() {
            return header;
        }

        public Double retornaProperty(PlanoConta c) {
            return c.getValor()[mes];
        }
    }


public class PlanoConta implements Serializable{
    
    private String nome;
    private Double[] valor;
Criado 31 de outubro de 2012
Ultima resposta 27 de nov. de 2012
Respostas 3
Participantes 3