O que eu fiz foi o seguinte:
<p:tab title="Consulta" titleStyle="font-size: small;">
<p:dataTable style="font-size: small" id="tabelaConsulta" var="obj" value="#{managedBeanTemplate.objetos()}" paginator="true" rows="10">
<ui:insert name="tabelaConsulta"/>
</p:dataTable>
</p:tab>
No meu managed bean o objetos esta assim
public ArrayList objetos(){
return configuracoes.objetos();
}
E a minha classe configurações é uma classe abstrata, aí eu implemento essa classe em varios managedBeans do tipo requestScoped, só pra carregar as configurações, como no exemplo:
@ManagedBean(name="managedBeanUnidade")
@RequestScoped
public class ManagedBeanUnidade extends Configuracoes implements Serializable {
@Override
public ArrayList objetos() {
try {
PreparedStatement pst = ConnectDb.getConnection().prepareStatement("select * from Unidade");
ArrayList al = JdbcUtil.convertResultSetIntoList(Unidade.class, pst.executeQuery());
return al;
} catch (Exception e) {
e.printStackTrace();
return new ArrayList<Unidade>();
} finally {
ConnectDb.closeCurrentConnection();
}
}
public Configuracoes getConfiguracoes(){
return new ManagedBeanUnidade();
}
}
Aí depois disso, na tela de cada crud é so transferir a configuração desse managedBean request pro managedBean do template, dessa forma que eu fiz ja ta funcionando a DataTable:
<ui:composition template="/template/template.xhtml">
<ui:define name="carregarConfiguracoes">
#{managedBeanTemplate.setConfiguracoes(managedBeanUnidade.configuracoes)}
</ui:define>
<ui:define name="tabelaConsulta">
<p:column>
<f:facet name="header">
<h:outputText value="Sigla" />
</f:facet>
<h:outputText value="#{obj.unida5descr}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Descrição" />
</f:facet>
<h:outputText value="#{obj.unida15descr}" />
</p:column>
</ui:define>
</ui:composition>
Por enquanto está sendo feita a inclusão manual das colunas, mas pretendo fazer algo pra ele fazer isso automaticamente, usando esse esquema da transferencia de configurações.