UIData - criar colunas de modo dinamico

salve pessoal! estou dando uma estudada na criação de components… e estava querendo descobrir como fazer uma coisa mais dinamica, assim, quando a pessoa usar essa tag, ela vai apenas colocar um list vindo do managebean e vai gerar toda a table dinamicamente.

try { UIData data = (UIData) component; Object objeto = data.getValue(); if (objeto instanceof List) { List lista = (List) objeto; for (Object item : lista) { Class classe = item.getClass(); Field[] fields = classe.getDeclaredFields(); for (Field field : fields) { if (field.isAnnotationPresent(Coluna.class)) { UIColumn coluna = new UIColumn(); HtmlOutputLabel label = new HtmlOutputLabel(); field.setAccessible(true); label.setValue(field.get(item)); field.setAccessible(false); coluna.getChildren().add(label); data.getChildren().add(coluna); } } } } } catch (Exception e) { e.printStackTrace(); }
esse codigo basicamente pega o value da minha tag, joga num list, ai ele vai pegar cada item da lista, buscar os atributos e SE achar a anotacao “Coluna” (q eu criei) ela cria um output e uma coluna.
Cara, funciona, eu vejo ele criar as colunas certo, só q não renderiza. alguem sabe me explicar porq?! o estranho é q se eu coloco uma tag <h:column> dentro da minha tag,ela renderiza certinho…