Autocomplete con findRegex() Expresiones Regulares

Services

import com.avbravo.ejbspard.repository.PaisRepository;
import com.avbravo.avbravoutils.JsfUtil;
import com.avbravo.ejbspard.entity.*;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import org.bson.Document;

/**
 *
 * @authoravbravo
 */
@Stateless
public class PaisServices {

    @Inject
    PaisRepository paisRepository;

    public List<Pais> complete(String query) {
        List<Pais> suggestions = new ArrayList<>();
           try {
               String field = (String) UIComponent.getCurrentComponent(FacesContext.getCurrentInstance()).getAttributes().get("field");               
               query = query.trim();
               if (query.length() < 1) {
                   return suggestions;
               }   
               suggestions=  paisRepository.findRegex(field, query,true,new Document(field,1));

           } catch (Exception e) {
                    JsfUtil.errorMessage("complete() " + e.getLocalizedMessage());
           }
           return suggestions;
    }

}

En el Controller

Inyectar el Services, agregar el handleSelect(SelectEvent event).

En la página xhtml

Pasamos el parametro field con el nombre del atributo del entity por el que deseamos buscar

Resultado

Last updated

Was this helpful?