Boa noite galera, já pesquisei bastante sobre esses metodos para ordenar e filtrar utilizando o primefaces com o dataTabe mas não sei onde estou errando.
quando eu coloco algum valor no filtro ele diz que nenhum valor foi encontrado e quando eu apago o valor da pesquisa, todos os resultados aparecem novamente.
segue o meu codigo : xhtml
[code]<h:form id=“form” rendered="#{LoginMB.logado}">
<p:growl id=“growl” showDetail=“true”  />
<p:dataTable var=“hot” value="#{hotelMB.lazyModel}" paginator=“true” rows=“15"
paginatorTemplate=”{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}“
rowsPerPageTemplate=“5,10,15,20,25” selectionMode=“single” selection=”#{hotelMB.hotel}" id=“hotTable” lazy=“true” rowKey="#{hot.id_hotel}" >
      <p:ajax event="rowSelect" update=":form:display" oncomplete="hotDialog.show()" />  
    <f:facet name="header" >  
        Hotéis  
    </f:facet>  
    <p:column headerText="Nome Hotel"  sortBy="#{hot.nomeHotel}" filterBy="#{hot.nomeHotel}" id="nomeHotel">  
        #{hot.nomeHotel}  
    </p:column>  
    <p:column headerText="Razão Social" sortBy="#{hot.razaoSocial}" filterBy="#{hot.razaoSocial}" id="razaoSocial">  
        #{hot.razaoSocial}  
    </p:column>  
    <p:column headerText="Cnpj" sortBy="#{hot.cnpj}" filterBy="#{hot.cnpj}" id="cnpj">  
        #{hot.cnpj}  
    </p:column>  
    <p:column headerText="Endereço" sortBy="#{hot.endereco}" filterBy="#{hot.endereco}" id="endereco">  
        #{hot.endereco}  
    </p:column>  
</p:dataTable>  [/code]
meu ManagedBean :
[code]@ManagedBean(name=“hotelMB”)
@SessionScoped
public class HotelMB implements Serializable{
private HotelBean hotel;
private ArrayList<HotelBean> list_hoteis;
private LazyDataModel<HotelBean> lazyModel;
public HotelMB(){
    hotel = new HotelBean();
            
}
public HotelBean getHotel() {
    return hotel;
}
public void setHotel(HotelBean hotel) {
    this.hotel = hotel;
}
public LazyDataModel<HotelBean> getLazyModel() {
    return lazyModel;
}
public void setLazyModel(LazyDataModel<HotelBean> lazyModel) {
    this.lazyModel = lazyModel;
}
public ArrayList<HotelBean> getList_hoteis() {
    return list_hoteis;
}
public void setList_hoteis(ArrayList<HotelBean> list_hoteis) {
    this.list_hoteis = list_hoteis;
}
public String consultaHoteis(){
    try {
        HotelDAO dao_Hotel = new HotelDAO();
        
        list_hoteis = new ArrayList();
        list_hoteis = dao_Hotel.hoteis();
        
        lazyModel = new LazyHotelDataModel(list_hoteis);
    
    
   // return list_hoteis;
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(HotelMB.class.getName()).log(Level.SEVERE, null, ex);
    } catch (SQLException ex) {
        Logger.getLogger(HotelMB.class.getName()).log(Level.SEVERE, null, ex);
    }
    return "consultaHotel.xhtml?faces-redirect=true";
}
}[/code]
minha classe LazyHotelDataModel :
[code]public class LazyHotelDataModel extends LazyDataModel{
private List<HotelBean> datasource; 
public LazyHotelDataModel(List<HotelBean> datasource) {  
    this.datasource = datasource;  
} 
@Override
public List<HotelBean> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,String> filters) {  
    List<HotelBean> data = new ArrayList<HotelBean>();  
    //filter  
    for(HotelBean hotel : datasource) {  
        boolean match = true;  
        for(Iterator<String> it = filters.keySet().iterator(); it.hasNext();) {  
            try {  
                String filterProperty = it.next();  
                String filterValue = filters.get(filterProperty);  
                String fieldValue = String.valueOf(hotel.getClass().getField(filterProperty).get(hotel));  
                if(filterValue == null || fieldValue.startsWith(filterValue)) {  
                    match = true;  
                }  
                else {  
                    match = false;  
                    break;  
                }  
            } catch(Exception e) {  
                match = false;  
            }   
        }  
        if(match) {  
            data.add(hotel);  
        }  
    }  
    //sort  
    if(sortField != null) {            
        Collections.sort(data, new LazySorterHotel(sortField, sortOrder));
    }
    
    //rowCount  
    int dataSize = data.size();  
    this.setRowCount(dataSize);  
    //paginate  
    if(dataSize > pageSize) {  
        try {  
            return data.subList(first, first + pageSize);  
        }  
        catch(IndexOutOfBoundsException e) {  
            return data.subList(first, first + (dataSize % pageSize));  
        }  
    }  
    else {  
        return data;  
    }  
}
}[/code]
o que eu realmente preciso para o metodo sortBy e filterBy do primefaces funcione ??