Criar rich:dataTable Dinamicamente

Ja tenho meu managedBean, ele ja esta sendo usado, so falta criar os RichDataTables

[code]public class RankingBB extends DataTableModel{

public HtmlPanelGroup dataTableGroup;

/*
 * Combo Interface
 */
private Integer valueComboInterface;
private List<Interface> listInterface;
private List<SelectItem> listSelectItemInterface;

/*
 * SelectListMany Regional
 */
private List<Regional> listRegional;
private List<SelectItem> listSelectItemRegional;
private List<Integer> listRegionaisSelecionadas;

private final Integer AGRUPAR_REGIONAIS = 1;
private final Integer QUEBRAR_REGIONAIS = 2;
private boolean renderedColunaRegional = true;
private Integer valueSelectOneRegional;
private RankingDTO rankingDTO;

/*
 * Combo Ano
 */
private Integer valueComboAno;
private List<String> listAno;
private List<SelectItem> listSelectItemAno;
private Date dataAtual = new Date();
private Integer codAno = 1;

/*
 * Combo Mes
 */
private Integer valueComboMes;
private List<String> listMes;
private List<SelectItem> listSelectItemMes;


@PostConstruct
public void init(){
	listAno = anosConsulta(dataAtual);
	preencheCombos();
	listRegional = preencheSelectManyListRegional(getListSelectItemRegional(), getListRegional());
}

@Override
public DataModel getModel() {
// TODO Auto-generated method stub
return null;
}

@Override
public void setModel(DataModel model) {
	// TODO Auto-generated method stub
	
}

}
[/code]

ficaria ± assim:

	
	//Um ejb aki tem que fazer lookup é claro.
	private TesteEjb testeEjb;
	
	
	@Override
	public CustomTableVO getCustomTableVO() {
		CustomTableVO tb = new CustomTableVO();
		tb.setAlign("center");
		tb.setColunas(loadCustomColumns());
		tb.setRows(10);
		tb.setSortMode("single");
		tb.setValueExpression("#{mbean.model}");
		tb.setVar("item");
		
		return null;
	}

	@Override
	public DataModel getModel() {
		
		return new ListDataModel(testeEjb.listarDados());
	}

	@Override
	public List&lt;CustomColumnsVO&gt; loadCustomColumns() {
	CustomColumnsVO colunaId = createColumn("ID", "#{item.id}",Long.class , ComponentType.OUTPUT_TEXT, "", false, "");
	CustomColumnsVO colunaNome = createColumn("Nome", "#{item.nome}",String.class , ComponentType.OUTPUT_TEXT, "", false, "");
	
	List&lt;CustomColumnsVO&gt; colunas = new ArrayList&lt;CustomColumnsVO&gt;();
	colunas.add(colunaId);
	colunas.add(colunaNome);
		return colunas;
	}

vou ver se acho um exemplo completo aki, faz tempao que fiz isso e nao to lembrando em qual projeto foi.

achei é assim que ta aki:

 List&lt;CustomColumnsVO&gt; customTable = new ArrayList&lt;CustomColumnsVO&gt;();

    /*
     * createColumn(String columnName, String expression, Class&lt;?&gt; columnType,
     * ComponentType componentType, String actionListenerMethodBinding, Boolean
     * disabled, String onComplete)
     */

  
    public List&lt;CustomColumnsVO&gt; loadCustomColumns() {
	boolean disabled = !getMBUnidadeOperacional().getIsEditing();
	customTable.add(createColumn("Del.", null, HtmlCommandButton.class,
		ComponentType.BUTTON, "#{mbPeriodoOperacao.actionDelete}",
		disabled, "Richfaces.showModalPanel('periodoDeletePanel')"));

	customTable.add(createColumn("Ref. Inicial",
		"#{item.vigencia.dataHoraInicio}", Date.class,
		ComponentType.COMMAND_LINK,
		"#{mBPeriodoOperacao.actionEdit}", disabled,
		"Richfaces.showModalPanel('novoPeriodoPanel')"));
	customTable.add(createColumn("Ref. Final",
		"#{item.vigencia.dataHoraFim}", Date.class,
		ComponentType.OUTPUT_TEXT, "", false, ""));
	customTable.add(createColumn("Freqüência de medição",
		"#{item.tipoFrequencia}", Enum.class,
		ComponentType.OUTPUT_TEXT, "", false, ""));	
	

	return customTable;
    }

    public CustomTableVO getCustomTableVO() {
	CustomTableVO customDataTable = new CustomTableVO();
	customDataTable.setAlign("center");
	customDataTable.setColunas(loadCustomColumns());
	customDataTable.setRows(5);
	customDataTable.setSortMode("single");
	customDataTable.setValueExpression("#{mBPeriodoOperacao.model}");
	customDataTable.setVar("item");
	return customDataTable;
    }


tem como me mostrar agora seu getModel,setModel? E o binding como vc criou o panelGroup? Sei que to encomodando mas e pq nunca fiz isso e to perdido =[

minhas implementações estao assim:

[code]@Override
public DataModel getModel() {
// TODO Auto-generated method stub
return null;
}

@Override
public void setModel(DataModel model) {
	// TODO Auto-generated method stub
	
}

public TableRankingTotalVendas getTable() {
	TableRankingTotalVendas tb = new TableRankingTotalVendas();   
    tb.setColunas(loadCustomColumns());   
    tb.setRows(10);   	   
    tb.setValueExpression("#{rankingBB.model}");   
    tb.setVar("item");		
	return tb;
}


public List<ColumnsTableRanking> loadCustomColumns() {
	ColumnsTableRanking colunaId = createColumn("ID", "#{item.id}",Long.class , ComponentType.OUTPUT_TEXT, "", false, "");   
	ColumnsTableRanking colunaNome = createColumn("Nome", "#{item.nome}",String.class , ComponentType.OUTPUT_TEXT, "", false, "");   
	  
	List<ColumnsTableRanking> colunas = new ArrayList<ColumnsTableRanking>();   
	colunas.add(colunaId);   
	colunas.add(colunaNome);   
	return colunas;  
}[/code]
@Override
	public DataModel getModel() {
		//testeEjb um ejb que faz um select  no banco e retorna todos os objetos Usuarios por exemplo
		return new ListDataModel(testeEjb.listarUsuarios());
	}

	@Override
	public void setModel(DataModel model) {
		this.model = model;
		
	}

e na sua pagina vc coloca <h:panelGroup binding="#{bean.dataTableGroup}" />

bean.dataTableGroup vc criou um public HtmlPanelGroup dataTableGroup no seu bean? So isso? Vou testar aqui

è so isso msm, teste ai e poste o resultado.

Vou testar amanha no meu serviço, so uma pergunta, nao preciso setar nada para o dataTableGroup? Pq no bean nao estou fazendo nda com ele.
E quem vai chamar meus metodo getTable()?

Fazendo os testes aqui nao ta dando erro, só que a table nao aparece na pagina, sera pq?

Criei um método so pra teste:

[code]public void createDataTable(){

	HtmlColumn colum = new HtmlColumn();
	HtmlOutputText header = new HtmlOutputText();
	header.setValue("Produto");
	colum.setHeader(header);
	
	HtmlColumn columDois = new HtmlColumn();
	HtmlOutputText headerDois = new HtmlOutputText();
	header.setValue("Regional");
	colum.setHeader(headerDois);
	
	HtmlOutputText textUm = new HtmlOutputText();
	textUm.setValueExpression("value", createValueExpression("#{item.produto.dsProduto}", String.class));
	textUm.setValue("#{item.produto.dsProduto}");
	
	HtmlOutputText textDois = new HtmlOutputText();
	textUm.setValueExpression("value", createValueExpression("#{item.regional.dsRegional}", String.class));
	textUm.setValue("#{item.regional.dsRegional}");
	
	colum.getChildren().add(textUm);
	columDois.getChildren().add(textDois);
	
	getDataTable().getChildren().add(colum);
	getDataTable().getChildren().add(columDois);
	
	List<RankingProduto> listRanking = getRankingService().consultaTodos();		
	
	listDataModel = new ListDataModel(listRanking);
	
	getDataTable().setVar("item");
	
	getDataTable().setValueExpression("value", createValueExpression("#{rankingBB.listDataModel}", ListDataModel.class));
	
	getDataTableGroup().getChildren().add(getDataTable());
	
}[/code]

Na pagina:

<h:panelGroup binding="#{rankingBB.dataTableGroup}">	

Não aparece? Nem os cabecalhos da tabela?

Nao aparece nada =[
Eu posso usar um ListDataModel na expression?