Olá pessoal, estou com o seguinte problema: Tenho uma p:dataTable com paginação por demanda. o problema é que meus sortBy e filterBy nao funcionam. Acho que é por causa da paginação. Alguém tem alguma ideia de como resolver isso?
XHTML
<p:dataTable id="dtCarreta" value="#{carretaMBean.carretas}" lazy="true" var="item" paginator="true" rows="5"
emptyMessage="#{msgs.dtVazia}" rowsPerPageTemplate="5,10,15" selection="#{carretaMBean.selectedCarretas}"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink}
{LastPageLink} {RowsPerPageDropdown}" rowStyleClass="#{empty rowIx or rowIx mod 2 ne 0 ? 'even-row' : 'odd-row'}"
rowIndexVar="rowIx">
<p:column selectionMode="multiple" />
<p:column id="clnCodCarreta" sortBy="#{item.codigocarreta}"
filterBy="#{item.codigocarreta}" style="width: 50px" >
<f:facet name="header">
<h:outputText id="optCodigoCarreta" value="#{msgs.optTableCodigoCarreta}" />
</f:facet>
<h:outputText value="#{item.codigocarreta}"/>
</p:column>
<p:column id="clnDescricaoCarreta" sortBy="#{item.descricao}"
filterBy="#{item.descricao}">
<f:facet name="header">
<h:outputText id="optDescricaoCarreta"
value="#{msgs.optTableDescricaoCarreta}" />
</f:facet>
<h:outputText value="#{item.descricao}"/>
</p:column>
<p:column id="clnPlaca" sortBy="#{item.placa}" filterBy="#{item.placa}">
<f:facet name="header">
<h:outputText value="#{msgs.optTablePlacaCarreta}" />
</f:facet>
<h:outputText value="#{item.placa}"/>
</p:column>
</p:dataTable>
BEAN
[code]public LazyDataModel getCarretas() {
if (cachedCarreta == null) {
cachedCarreta = new LazyDataModel() {
@Override
public List<Carreta> load(int first, int pageSize,
String sortBy, boolean bln, Map<String, String> map) {
List<Carreta> pesquisaCarreta = carretaDAO.getListaPaginado(first, pageSize, sortBy);
return pesquisaCarreta;
}
};
int totalRowCount = carretaDAO.count();
cachedCarreta.setPageSize(3);
cachedCarreta.setRowIndex(1);
cachedCarreta.setRowCount(totalRowCount);
}
return cachedCarreta;
}[/code]
DAO
public int count() {
Long resultado = new Long(0L);
Query query = getSession().createQuery("select count(e) from Carreta e" );
resultado = (Long) query.uniqueResult();
return resultado.intValue();
}
[code]public List getListaPaginado(int inicio, int quantidade, String sortBy) {
Session ses = getSession();
Query query = ses.createQuery(“SELECT e FROM Carreta e”).setFirstResult(inicio).setMaxResults(quantidade);
List<Carreta> lista = (List<Carreta>) query.list();
ses.close();
return lista;
}[/code]
Por favor, se alguém souber me ajude…