Taller 14.Autocomplete
Last updated
Was this helpful?
Last updated
Was this helpful?
Definiremos autocomplete para usarlo como filtros para el datatable
Cuando seleccionamos uno
se muestra solo la persona que se selecciono en el autocomplete
Si deseamos ver todos los documentos dar clic en el botón Todos
En el controller
Inyectar PersonaServices y generar los métodos set/get
Crear un entity selected y los métodos set/get
Crear el método para validar al seleccionar un elemento del autocomplete, en el ejemplo lo filtramos en base al seleccionado.
PersonaController.java
@Inject
PersonaServices personaServices;
Persona personaSelected = new Persona();
public Persona getPersonaSelected() {
return personaSelected;
}
public void setPersonaSelected(Persona personaSelected) {
this.personaSelected = personaSelected;
}
public PersonaServices getPersonaServices() {
return personaServices;
}
public void setPersonaServices(PersonaServices personaServices) {
this.personaServices = personaServices;
}
public void handleAutocompleteOfListXhtml(SelectEvent event) {
try {
personaList.removeAll(personaList);
personaList.add(personaSelected);
} catch (Exception e) {
JsfUtil.errorDialog("handleAutocompleteOfListXhtml()", e.getLocalizedMessage());
}
}
Cambiamos el método getPersonaList()
public List<Persona> getPersonaList() {
// return personaList;
return personaRepository.findAll();
}
por
public List<Persona> getPersonaList() {
return personaList;
}
En el init agregamos e
personaList personaRepository.findAll();
Agregamos un método para llamar a todos los registros
public String showAll(){
personaList = personaRepository.findAll();
return "";
}
PersonaController.java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.avbravo.practica.controller;
import com.avbravo.jmoordb.configuration.JmoordbContext;
import com.avbravo.jmoordb.mongodb.history.repository.RevisionHistoryRepository;
import com.avbravo.jmoordb.services.RevisionHistoryServices;
import com.avbravo.jmoordbutils.JsfUtil;
import com.avbravo.practicaejb.entity.Persona;
import com.avbravo.practicaejb.repository.PersonaRepository;
import com.avbravo.practicaejb.services.PersonaServices;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import javax.annotation.PostConstruct;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;
import org.primefaces.event.SelectEvent;
/**
*
* @author avbravo
*/
@Named
@ViewScoped
public class PersonaController implements Serializable {
private static final long serialVersionUID = 1L;
Persona persona = new Persona();
Persona personaSelected = new Persona();
@Inject
PersonaRepository personaRepository;
@Inject
RevisionHistoryRepository repositoryRevisionHistory;
@Inject
RevisionHistoryServices revisionHistoryServices;
@Inject
PersonaServices personaServices;
List<Persona> personaList = new ArrayList<>();
public Persona getPersonaSelected() {
return personaSelected;
}
public void setPersonaSelected(Persona personaSelected) {
this.personaSelected = personaSelected;
}
public PersonaServices getPersonaServices() {
return personaServices;
}
public void setPersonaServices(PersonaServices personaServices) {
this.personaServices = personaServices;
}
public List<Persona> getPersonaList() {
return personaList;
}
public void setPersonaList(List<Persona> personaList) {
this.personaList = personaList;
}
public Persona getPersona() {
return persona;
}
public void setPersona(Persona persona) {
this.persona = persona;
}
@PostConstruct
public void init() {
repositoryRevisionHistory.setDatabase("practica_history");
if (JmoordbContext.get("action") != null) {
String action = (String) JmoordbContext.get("action");
if (action.equals("view")) {
persona = (Persona) JmoordbContext.get("persona");
}
}
//Usuario jmoordb_user = (Usuario) JmoordbContext.get("jmoordb_user");
//
// JmoordbConnection jmc = new JmoordbConnection.Builder()
// .withSecurity(false)
// .withDatabase("practica")
// .withHost("")
// .withPort(0)
// .withUsername("")
// .withPassword("")
// .build();
personaList = personaRepository.findAll();
}
public String save() {
try {
persona.setCedula(persona.getCedula().toLowerCase());
Optional<Persona> optional = personaRepository.findById(persona);
if (optional.isPresent()) {
JsfUtil.warningMessage("Existe una persona con esa cedula");
return null;
}
persona = personaRepository.addUserInfoForSaveMethod(persona, "myusername", "create");
// persona.setUserInfo(personaRepository.generateListUserinfo("myusername", "create"));
if (personaRepository.save(persona, false)) {
JsfUtil.successMessage("Guardado");
repositoryRevisionHistory.save(revisionHistoryServices.getRevisionHistory(persona.getCedula(),
"myusername",
"create", "persona", personaRepository.toDocument(persona).toString()));
persona = new Persona();
} else {
JsfUtil.errorDialog("no se guardo()", personaRepository.getException().toString());
}
} catch (Exception e) {
JsfUtil.errorDialog("save()", e.getLocalizedMessage());
}
return "";
}
public String delete(Object item, Boolean deleteonviewpage) {
String path = "";
try {
persona = (Persona) item;
if (personaRepository.delete("cedula", persona.getCedula())) {
repositoryRevisionHistory.save(revisionHistoryServices.getRevisionHistory(persona.getCedula(),
"myusername",
"delete", "persona", personaRepository.toDocument(persona).toString()));
JsfUtil.successMessage("Se elimino la persona");
if (!deleteonviewpage) {
personaList.remove(persona);
} else {
persona = new Persona();
}
}
} catch (Exception e) {
JsfUtil.errorDialog("delete()", e.getLocalizedMessage());
}
return "";
}// </editor-fold>
public String edit() {
try {
repositoryRevisionHistory.save(revisionHistoryServices.getRevisionHistory(persona.getCedula(),
"myusername",
"update", "persona", personaRepository.toDocument(persona).toString()));
persona = personaRepository.addUserInfoForEditMethod(persona, "myusarname", "update");
personaRepository.update(persona);
JsfUtil.successMessage("Se actualizo el documento");
} catch (Exception e) {
JsfUtil.errorDialog("edit()", e.getLocalizedMessage());
}
return "";
}// </editor-fold>
public String prepare(Persona persona) {
try {
JmoordbContext.put("persona", persona);
JmoordbContext.put("action", "view");
} catch (Exception e) {
JsfUtil.errorDialog("edit()", e.getLocalizedMessage());
}
return "view";
}
public void handleAutocompleteOfListXhtml(SelectEvent event) {
try {
personaList.removeAll(personaList);
personaList.add(personaSelected);
} catch (Exception e) {
JsfUtil.errorDialog("handleAutocompleteOfListXhtml()", e.getLocalizedMessage());
}
}
public String showAll(){
personaList = personaRepository.findAll();
return "";
}
}