1.7 <p:selectOneMenu> eventos en list.xhtml
Last updated
Was this helpful?
Last updated
Was this helpful?
Cuando usamos un <p:selectOneMenu en el list.xhtml deseamos hacer un filtro y actualizar el datatable con el filtro creado, recuerde que en el list.xhtml necesitamos invocar el método move() con lo que es necesario guardar el search y el valor para luego realizar la operación.
Definimos el selectOneMenu
<b:panelGrid colSpans="2,4,2,4" columns="4" size="xs">
<p:outputLabel value="#{msg['field.secretarioadministrativo']}"/>
<p:selectOneMenu id="secretarioadministrativo" value="#{secretarioAdministrativoController.vistoBuenoSecretarioAdministrativoSearch}" style="width:150px">
<p:ajax listener="#{secretarioAdministrativoController.onVistoBuenoChangeSecretarioAdministrativo}" update=":form:dataTable" />
<f:selectItem itemLabel="#{msg['selectitem.seleccione']}" itemValue="" noSelectionOption="true" />
<f:selectItem itemLabel="#{msg['selectitem.pendiente']}" itemValue="pe" />
<f:selectItem itemLabel="#{msg['selectitem.aprobado']}" itemValue="si" />
<f:selectItem itemLabel="#{msg['selectitem.noaprobado']}" itemValue="no" />
</p:selectOneMenu>
<p:outputLabel value="#{msg['field.coordinador']}"/>
<p:selectOneMenu id="coordinador" value="#{secretarioAdministrativoController.vistoBuenoSearch}" style="width:150px">
<p:ajax listener="#{secretarioAdministrativoController.onVistoBuenoChange}" update=":form:dataTable" />
<f:selectItem itemLabel="#{msg['selectitem.seleccione']}" itemValue="" noSelectionOption="true" />
<f:selectItem itemLabel="#{msg['selectitem.pendiente']}" itemValue="pe" />
<f:selectItem itemLabel="#{msg['selectitem.aprobado']}" itemValue="si" />
<f:selectItem itemLabel="#{msg['selectitem.noaprobado']}" itemValue="no" />
</p:selectOneMenu>
Atributos para las búsquedas
private String vistoBuenoSecretarioAdministrativoSearch = "no";
private String viajeSecretarioAdministrativoSearch = "no";
Definir los eventos e invocar el metodo setSearchAndValue(). Recuerde que este método esta definido en el framework.
// <editor-fold defaultstate="collapsed" desc="String onVistoBuenoChange()">
public String onVistoBuenoChange() {
try {
setSearchAndValue("vistobuenocoordinador", vistoBuenoSearch);
move(page);
} catch (Exception e) {
errorServices.errorMessage(nameOfClass(), nameOfMethod(), e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="String onVistoBuenoChangeSecretarioAdministrativo()">
public String onVistoBuenoChangeSecretarioAdministrativo() {
try {
setSearchAndValue("vistobuenosecretarioadministrativo", vistoBuenoSecretarioAdministrativoSearch);
move(page);
} catch (Exception e) {
errorServices.errorMessage(nameOfClass(), nameOfMethod(), e.getLocalizedMessage());
}
return "";
}// </editor-fold>
En el metodo move() implementamos la búsqueda recuperando los valores del search y el searchValue
// <editor-fold defaultstate="collapsed" desc="move(Integer page)">
@Override
public void move(Integer page) {
try {
this.page = page;
solicitudDataModel = new SolicitudDataModel(solicitudList);
Usuario jmoordb_user = (Usuario) JmoordbContext.get("jmoordb_user");
String descripcion = jmoordb_user.getUnidad().getIdunidad();
Document doc = new Document("activo", "si");
switch (getSearch()) {
case "_init":
case "_autocomplete":
solicitudList = solicitudRepository.findPagination(doc, page, rowPage, new Document("idsolicitud", -1));
break;
case "idsolicitud":
if (getValueSearch() != null) {
solicitudList = solicitudRepository.findPagination(doc, page, rowPage, new Document("idsolicitud", -1));
} else {
solicitudList = solicitudRepository.findPagination(doc, page, rowPage);
}
break;
case "estatus":
Estatus estatus = new Estatus();
estatus = (Estatus) getValueSearch() ;
doc.append("estatus.idestatus", estatus.getIdestatus());
solicitudList = solicitudRepository.findPagination(doc, page, rowPage, new Document("idsolicitud", -1));
break;
case "_betweendates":
solicitudList = solicitudRepository.filterBetweenDatePaginationWithoutHours("activo", "si",
"fechahorapartida", fechaDesde,
"fechahoraregreso", fechaHasta,
page, rowPage, new Document("idsolicitud", -1));
break;
case "vistobuenocoordinador":
String vistoBueno = (String) getValueSearch() ;
doc = new Document("activo", "si");
doc.append("vistoBueno.aprobado", vistoBueno);
solicitudList = solicitudRepository.findPagination(doc, page, rowPage, new Document("idsolicitud", -1));
break;
case "vistobuenosecretarioadministrativo":
String vistoBuenoSecretarioAdministrativo = (String) getValueSearch() ;
doc = new Document("activo", "si");
doc.append("vistoBuenoSecretarioAdministrativo.aprobado", vistoBuenoSecretarioAdministrativo);
solicitudList = solicitudRepository.findPagination(doc, page, rowPage, new Document("idsolicitud", -1));
break;
case "porsolicitado":
Usuario solicita = (Usuario)getValueSearch() ;
doc = new Document("activo", "si");
doc.append("usuario.0.username", solicita.getUsername());
solicitudList = solicitudRepository.findPagination(doc, page, rowPage, new Document("idsolicitud", -1));
break;
case "porresponsable":
Usuario responsable = (Usuario) getValueSearch() ;
doc = new Document("activo", "si");
doc.append("usuario.1.username", responsable.getUsername());
solicitudList = solicitudRepository.findPagination(doc, page, rowPage, new Document("idsolicitud", -1));
break;
default:
solicitudList = solicitudRepository.findPagination(doc, page, rowPage, new Document("idsolicitud", -1));
break;
}
solicitudDataModel = new SolicitudDataModel(solicitudList);
} catch (Exception e) {
errorServices.errorMessage(nameOfClass(), nameOfMethod(), e.getLocalizedMessage());
}
}// </editor-fold>