filterBy com PrimeFaces

0 respostas
C

Olá pessoal,

estou com problema para filtrar os dados da p:dataTable, para fazer isso estou usando o "filterBy " na coluna da tabela. Mas o problema é que esta filtrando nada. XHTML:
<p:dataTable id="dtCarroceria" value="#{carroceriaMBean.lazyModel}" lazy="true" var="item" paginator="true" rows="5" paginatorAlwaysVisible="false"
                             emptyMessage="#{msgs.dtVazia}" rowsPerPageTemplate="5,10,15" selection="#{carroceriaMBean.selectedCarrocerias}"
                             rowIndexVar="rowIx" rowStyleClass="#{empty rowIx or rowIx mod 2 ne 0 ? 'even-row' : 'odd-row'}" rowKey="#{item.codigocarroceria}">
                
                <p:column selectionMode="multiple" id="selecao" />
                <p:column id="clnCodCarroceria" sortBy="#{item.codigocarroceria}" filterBy="#{item.codigocarroceria}">
                    <f:facet name="header">
                        <h:outputText id="optCodigoCarroceria" value="#{msgs.optTableCodigoTipoCarroceria}" />
                    </f:facet>
                    <h:outputText value="#{item.codigocarroceria}"/>
                </p:column>
                <p:column id="clnDescricaoCarreta" sortBy="#{item.descricao}" filterBy="#{item.descricao}">
                    <f:facet name="header">
                        <h:outputText id="optDescricaoCarroceria" value="#{msgs.optTableDescTipoCarroceria}" />
                    </f:facet>
                    <h:outputText value="#{item.descricao}"/>
                </p:column>
		<f:facet name="footer">
			<h:outputText value="#{msgs.contaRegistros} #{carroceriaMBean.lazyModel.rowCount}" />
		</f:facet>
            </p:dataTable>
Bean:
private void init() {
		lazyModel = new LazyDataModel<Carroceria>() {
			@Override
			public List<Carroceria> load(final int index, final int count, final String sortField, final SortOrder sortOrder,
					final Map<String, String> filters) {

				final List<Carroceria> toReturn = carroceriaService.getListaPaginado(index, count, sortField, sortOrder, filters);
				if (ehParaContar) {
					rowCount = carroceriaService.count();
					lazyModel.setRowCount(rowCount);
					ehParaContar = false;
				}
				return toReturn;
			}
		};
		rowCount = carroceriaService.count();
		lazyModel.setRowCount(rowCount);
	}
DAO:
public List<Carroceria> getListaPaginado(int index, int count, String sortField, SortOrder sortOrder, Map<String, String> filters) {
		Session s = getSession();

		Criteria crit = s.createCriteria(Carroceria.class);

		if (sortField != null && !sortField.isEmpty()) {
			if (sortOrder == SortOrder.ASCENDING) {
				crit = crit.addOrder(Order.asc(sortField));
			} else {
				crit = crit.addOrder(Order.desc(sortField));
			}
		}
		
		if (!filters.isEmpty()) {  
		    Iterator<Entry<String, String>> iterator = filters.entrySet().iterator();  
		    while (iterator.hasNext()) {  
		        Entry<String, String> entry = iterator.next();  
		        crit.add(Restrictions.ilike(entry.getKey(), entry.getValue(), MatchMode.ANYWHERE));
		    }  
		}

		return crit.setFirstResult(index).setMaxResults(count).list();
	}
Alguém pode me ajudar ????
Criado 6 de março de 2012
Respostas 0
Participantes 1