Putz, Fernando, não estou achando o problema... Mas vou te dar pelo menos algumas dicas:
Eu fiz mas continua do mesmo jeito, ele não está populando a tabela. Acredito que o rowCount seja pego sem problemas porque a quantidade é mostrada e o botões para cada página são mostrados. Só os registros que não aparecem.
Para o RowCounts eu sobrescrevi o método getRowCount(), dessa forma ele está verificando direto no banco a quantidade de linhas.
@Override
public int getRowCount() {
FacesContext facesContext = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(true);
Empresa emp = (Empresa) session.getAttribute("emp");
ClienteDAO dao = new ClienteDAO();
return dao.getNumeroDeClientes(emp.getFlag());
}
O "getRowCount" deve ser chamado diversas vezes ao montar a página, então é melhor você fazer o "setRowCount( dao.getNumeroDeClientes() )", assim a busca é realizada apenas uma vez.
Sugiro colocar o setPageSize(), uma vez eu tive um problema porque não tinha colocado isso. Não lembro qual era o problema, mas talvez resolva o seu. (Mas aí você também vai ter que tirar o dropdown e o rowsPerPageTemplate da tabela, acho que não vai custar nada, só para ver se resolve)
No xhtml eu posso chamar da forma abaixo e usar cliente como um objeto Cliente realmente?! Ou seja, o que é retornado para a tabela é o ArrayList<Cliente> que eu defini no DataModel mesmo!?
Sim, a chamada do cliente na página parece certa, e a tabela recebe o ArrayList<Cliente>.
Para tentar resolver o problema, você pode dar um print ou fazer o debug para ver o tamanho da lista que o método populateLista tá retornando?
Se não me engano, você passa o "ponteiro" da lista para esse método (objetos são passados por referência), aí, dentro do método você faz "lista = alguma outra coisa", então a sua lista antiga não foi alterada. Tente fazer: "lista
.addAll(busca no dao);"