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?