Son los eventos que se ejecutan cuando alguien selecciona un elemento de los autocomplete para los formularios list.xhtml
En un formulario list.xhtml deseamos filtrar los elementos para almacenar en un datatable por lo cual, se usara en conjunto con el metodo move(), lo que realizamos es que los guardamos en el método
que ofrece Jmoordb y almacena el campo y valor para las búsquedas
Reglas
1. Los autocomplete que buscan en atributos del entity simple no necesitan implementar el método handleAutocompleteOfListXhtml ya que internamente se controla el entity seleccionado.
Solo necesita validar en el método move(), no necesita definir el método handleAutocompleteOfListXhtml, ya que este se encuentra el jmoordb y el value apunta al entitySearch, que forma parte de la estandarizacion y con esto el framework conoce que es el mismo entity que debe manejar. Si se usa otro entity para el value debe definir el método que lo valide. Internamete el metodo obtiene el valor del {entity}Search.
rolController.handleAutocompleteOfListXhtml
@Override
public void move(Integer page) {
try {
this.page = page;
rolDataModel = new RolDataModel(rolList);
Document doc;
switch (getSearch()) {
case "_init":
rolList = rolRepository.findPagination(page, rowPage);
break;
case "_autocomplete":
break;
case "idrol":
if (getValueSearch() != null) {
rolSearch.setIdrol(getValueSearch().toString());
doc = new Document("idrol", rolSearch.getIdrol());
rolList = rolRepository.findPagination(doc, page, rowPage, new Document("idrol", -1));
} else {
rolList = rolRepository.findPagination(page, rowPage);
}
break;
case "rol":
if (getValueSearch()!= null) {
rolSearch.setRol(getValueSearch().toString());
rolList = rolRepository.findRegexInTextPagination("rol", rolSearch.getRol(), true, page, rowPage, new Document("rol", -1));
} else {
rolList = rolRepository.findPagination(page, rowPage);
}
break;
case "activo":
if (getValueSearch() != null) {
rolSearch.setActivo(getValueSearch().toString());
doc = new Document("activo", rolSearch.getActivo());
rolList = rolRepository.findPagination(doc, page, rowPage, new Document("idrol", -1));
} else {
rolList = rolRepository.findPagination(page, rowPage);
}
break;
default:
rolList = rolRepository.findPagination(page, rowPage);
break;
}
rolDataModel = new RolDataModel(rolList);
} catch (Exception e) {
errorServices.errorMessage(nameOfClass(), nameOfMethod(), e.getLocalizedMessage());
}
}
2. Los autocomplete en los formularios list que buscan por otro atributo o en entitys complejos deben implementar en el controller el método para asignar los valores a ser usados en el método move.
En este ejemplo usamos búsquedas mas complejas que no se almacenan en el {entity}Search, en estos casos debemos implementar nuestros métodos para validarlo.