Ola,
Estou com uma duvida sobre o JSF e não estou conseguindo resolver, é seguinte:
eu possuo um bean que contém um atributo dataModel
@Controller("categoriaBean")
@Scope("request")
public class CategoriaBean{
private DataModel dataModel;
public DataModel getDataModel() {
Long totalListSize = categoriaRepositorio.count();
List<Categoria> pagedList = categoriaRepositorio.loadAll(getDataTable().getFirst(), getDataTable().getRows());
this.dataModel = new PagedListDataModel(pagedList, totalListSize.intValue()); // classe que extende DataModel para implementar a paginação por demanda
return dataModel;
}
já na minha view tenho o seguinte:
<rich:datascroller align="left" for="userList" maxPages="10" />
<rich:dataTable id="userList" rows="10"
width="100%" binding="#{categoriaBean.dataTable}"
columnClasses="col" value="#{categoriaBean.dataModel}" var="row">
Quando eu visualizo essa view, o método getDataModel() é chamado três vezes, e consequentemente realizando duas consultas no banco desnecassárias (que na realidade são 4 consultas desnecessaria ja que tem o .count()).
Tem como eu evitar essas chamadas excessivas ao getDataModel???
Att. Dirceu Sobrinho
P.S.: Caso não tenha como evitar isso, estou pensando em colocar variaveis que verificam se os atributos da consulta são da consulta anterior caso sejam retorna o dataModel ja armazedo senao realiza uma nova consulta (mas essa sem duvidas não é a melhor solução).