Olá amigos, estou feliz em dizer que até que enfim saiu um Framework para JSF 2.0 com Grid que Funciona.
É a versão 2.2 do Primefaces, no exemplo do site não tem mas se voces pegarem os fontes verão como é simples e facil criar um Grid com Ordenação + Filtro e buscando os dados no Banco via JPA.
Segue o link para baixar via svn: http://primefaces.googlecode.com/svn
Só para efeito de demostração segue o trecho do codigo que faz a magica ok:
lazyModel = new LazyDataModel<CepEndereco>() {
/**
* Dummy implementation of loading a certain segment of data.
* In a real application, this method should load data from a datasource
*/
@Override
public List<CepEndereco> load(int first, int pageSize, String sortField, boolean sortOrder, Map<String, String> filters) {
logger.log(Level.INFO, "Loading the lazy cependereco data between {0} and {1}", new Object[]{first, (first + pageSize)});
List<CepEndereco> lazyCepEnderecos = new ArrayList<CepEndereco>();
//Sorting and Filtering information are not used for demo purposes just random dummy data is returned
if (sortOrder) {
cDirect = " asc";
} else {
cDirect = " desc";
}
if (filters.size() > 0) {
if (sortField == null) {
sortField = "a.num_cep";
} else if (sortField.equals("numCep")) {
sortField = "a.num_cep";
} else if (sortField.equals("dscLogradouro")) {
sortField = "a.dsc_logradouro";
} else if (sortField.equals("cepBairro.dscBairro")) {
sortField = "b.dsc_bairro";
} else if (sortField.equals("cepBairro.cepCidade.dscCidade")) {
sortField = "c.dsc_cidade";
} else if (sortField.equals("cepBairro.cepCidade.cepUf.codUf")) {
sortField = "d.cod_uf";
}
lazyCepEnderecos = cepEnderecoJPA.findCepEnderecoNative(pageSize, first, sortField, cDirect, filters);
} else {
if (sortField != null) {
sortField = "o." + sortField;
} else {
sortField = "o.numCep";
}
lazyCepEnderecos = cepEnderecoJPA.findCepEnderecoEntities(pageSize, first, sortField, cDirect);
}
return lazyCepEnderecos;
}
};
OBS: Somente funciona na versão 2.2 que ainda esta em fase de desenvolvimento ok