Filtrar desde el list.xhtml

Cuando deseamos hacer filtros para el list.xhml

  • Para filtrar por entity referenciado que es integer, el el move tenemos que invocar el método findPagination.

<b:panel title="#{app['label.search']}" id="content"> 
                <!--<b:panelGrid colSpans="2,10" size="xs">--> 
                <b:panelGrid colSpans="1,4,1,6"  columns="4" size="xs"> 

                    <p:outputLabel value="#{msg['field.cedula']}"/>
                    <e:autocompletecliente listener="#{clienteController.handleSelect}"
                                           value="#{clienteController.clienteSelected}"
                                           itemLabel=" #{p.cedula}"                                                
                                           field="cedula"
                                           update=" :form:dataTable"/>

                    <p:outputLabel value="#{msg['field.nombre']}"/>
                    <e:autocompletecliente listener="#{clienteController.handleSelect}"
                                           value="#{clienteController.clienteSelected}"
                                           itemLabel=" #{p.nombre}"
                                           field="nombre"
                                           size="40"
                                           update=" :form:dataTable"/>

                </b:panelGrid>
                <b:row>
                    <b:column medium-screen="4">
                        <a:search label="#{msg['field.idcliente']}"
                                  value="#{clienteController.lookupStoreejbServices.idcliente}"
                                  renderedList="#{applicationMenu.articulo.list}"  
                                  search="#{clienteController.searchBy('idcliente')}"
                                  />
                    </b:column>
                    <b:column medium-screen="8">
                        <a:search label="#{msg['field.nombre']}"
                                  value="#{marcaController.lookupStoreejbServices.nombre}"
                                  renderedList="#{applicationMenu.articulo.list}"  
                                  search="#{clienteController.searchBy('nombre')}"
                                  />
                    </b:column>
                    <b:column medium-screen="8">
                        <p:outputLabel value="#{msg['field.clasificacioncliente']}"/>                                 
                        <e:autocompleteclasificacioncliente listener="#{clienteController.searchBy('clasificacioncliente')}"
                                                            value="#{clienteController.lookupStoreejbServices.clasificacioncliente}"
                                                            itemLabel="#{p.descripcion}"
                                                            dropdown="true"
                                                            required="true"
                                                            minQueryLength="0"
                                                            field="descripcion"
                                                            update=" :form:dataTable"                                                            />
                    </b:column>
                </b:row>
            </b:panel>

EntityController.java

searchBy()

// <editor-fold defaultstate="collapsed" desc="searchBy(String string)">
    @Override
    public String searchBy(String string) {
        try {

            loginController.put("searchcliente", string);

            writable = true;
            move();

        } catch (Exception e) {
            JsfUtil.errorMessage("searchBy()" + e.getLocalizedMessage());
        }
        return "";
    }// </editor-fold>

move()

@Override
    public void move() {

        try {

            Document doc;
            switch (loginController.get("searchcliente")) {
                case "_init":
                    clienteList = clienteRepository.findPagination(page, rowPage);

                    break;
                case "_autocomplete":
                    //no se realiza ninguna accion 
                    break;

                case "idcliente":
                    doc = new Document("idcliente", lookupStoreejbServices.getIdcliente());

                    clienteList = clienteRepository.findBy(doc);
                    break;
                case "nombre":
                    clienteList = clienteRepository.findRegexInTextPagination("nombre", lookupStoreejbServices.getNombre(), true, page, rowPage, new Document("nombre", -1));
                    break;
                case "clasificacioncliente":
                   doc = new Document("clasificiacioncliente.idclasificacioncliente",lookupStoreejbServices.getClasificacioncliente().getIdclasificacioncliente());
                    clienteList = clienteRepository.findPagination( page, rowPage, doc,new Document("nombre", -1));
                    break;

                default:

                    clienteList = clienteRepository.findPagination(page, rowPage);
                    break;
            }

            clienteFiltered = clienteList;

            clienteDataModel = new ClienteDataModel(clienteList);

        } catch (Exception e) {
            JsfUtil.errorMessage("move() " + e.getLocalizedMessage());
        }
    }// </editor-fold>

Last updated