<p:autocomplete> JPA con scroll

Autocomplete con dropbox y tamaño definido para generar el scroll

En las propiedades del autocomplete colocar scrollHeight="250"dropdown="true"size="45"

 <p:outputLabel value="#{msg.contribuyente}"/>


    <p:autoComplete  scrollHeight="250"   dropdown="true"  size="45"  id="cedula"  value="#{comerciosController.comercios.cedula}"  
                                                 completeMethod="#{contribuyentesSearchController.completeNombre}"  
                                                 var="p"  
                                                 itemLabel="#{p.nombre} #{p.cedula} "  itemValue="#{p}" converter="contribuyentesConverter" forceSelection="true"> 

                                    <p:ajax event="itemSelect" listener="#{contribuyentesController.handleSelect}" update=":form:growl" />  
                                    <f:facet name="itemtip">
                                        <h:panelGrid columns="1" cellpadding="5">
                                            <h:outputText value="#{p.idcorregimiento.corregimiento}" />
                                        </h:panelGrid>
                                    </f:facet>
                                </p:autoComplete>

Metodo en ContribuyentesSearchController.java

 public List<Contribuyentes> completeNombre(String query) {
        List<Contribuyentes> suggestions = new ArrayList<>();
        try {
            query = query.trim();
            contribuyentesList = contribuyentesFacade.findByNombreLike(query.toLowerCase());

            contribuyentesList.stream().forEach((p) -> {
                suggestions.add(p);
            });

        } catch (Exception e) {
            JSFUtil.addErrorMessage("completeNombre() " + e.getLocalizedMessage());
        }

        return suggestions;
    }

ContribuyentesFacade

crear un Query usando like

public List<Contribuyentes> findByNombreLike(String value) {
        Query query = em.createQuery("SELECT c FROM Contribuyentes c WHERE lower(c.nombre) like :nombre");
        value = "" + value.trim() + "%";
        return query.setParameter("nombre", value).getResultList();
    }

Last updated