toolbarnewsavereturn
Genera los botones new, save, return.
Generalmente lo usamos con formularios donde no validamos por un campo en especial si no solamente al guardar

El <jmoordbjsf:toolbarnewsavereturn/>, se coloca en la parte inferior.
El método isNew() no valida si existe o no el elemento ya que no hay una búsqueda sino al guardar
el método save() debe implementarse la validaciòn para verificar si existe o no.
En el init() en el switch para new se debe invocar el isNew()
Componente
<jmoordbjsf:toolbarnewsavereturn
renderedNew ="#{applicationMenu.solicitudDocentePorAdministrador.create}"
rendererList="#{applicationMenu.solicitudDocentePorAdministrador.list}"
renderedSave="#{applicationMenu.solicitudDocentePorAdministrador.create}"
controller="#{solicitudController}"
entity="#{solicitudController.solicitud}"
repository="#{solicitudController.solicitudRepository}"
/>
case "gonew":
solicitud = new Solicitud();
writable = false;
isNew();
Controller
Método init() simplificado se elimino parte del código y solo se incluyo la sección que cambia case "gonew"
@PostConstruct
public void init() {
try {
if (action != null) {
switch (action) {
case "gonew":
solicitud = new Solicitud();
writable = false;
isNew();
//
break;
case "view":
break;
case "golist":
}
} else {
move();
}
} catch (Exception e) {
errorServices.errorMessage(nameOfClass(), nameOfMethod(), e.getLocalizedMessage());
}
}
isNew()
No validar si existe o no un registro
public String isNew() {
try {
writable = true;
Date idsecond = solicitud.getFecha();
Integer id = solicitud.getIdsolicitud();
// List<Solicitud> list = solicitudRepository.findBy(new Document("usuario.username", loginController.getUsuario().getUsername()).append("fecha", solicitud.getFecha()));
// if (!list.isEmpty()) {
// JsfUtil.warningDialog(rf.getAppMessage("warning.view"), rf.getMessage("warning.yasolicitoviajeenestafecha"));
// }
// if (DateUtil.fechaMenor(solicitud.getFecha(), DateUtil.getFechaActual())) {
// JsfUtil.warningDialog(rf.getAppMessage("warning.view"), rf.getMessage("warning.fechasolicitudmenorqueactual"));
// writable = false;
//
// }
solicitud = new Solicitud();
solicitudSelected = new Solicitud();
solicitud.setIdsolicitud(id);
solicitud.setFecha(idsecond);
solicitud.setMision("---");
solicitud.setNumerodevehiculos(1);
solicitud.setPasajeros(25);
solicitud.setLugarpartida("UTP-AZUERO");
solicitud.setFechaestatus(DateUtil.getFechaHoraActual());
solicita = loginController.getUsuario();
responsable = solicita;
responsableOld = responsable;
usuarioList = new ArrayList<>();
usuarioList.add(solicita);
usuarioList.add(responsable);
solicitud.setUsuario(usuarioList);
solicitud.setPeriodoacademico(DateUtil.getAnioActual().toString());
solicitud.setFechahorapartida(solicitud.getFecha());
solicitud.setFechahoraregreso(solicitud.getFecha());
unidadList = new ArrayList<>();
unidadList.add(loginController.getUsuario().getUnidad());
Integer mes = DateUtil.mesDeUnaFecha(solicitud.getFecha());
String idsemestre = "V";
if (mes <= 3) {
//verano
idsemestre = "V";
} else {
if (mes <= 7) {
//primer
idsemestre = "I";
} else {
//segundo
idsemestre = "II";
}
}
solicitud.setSemestre(semestreServices.findById(idsemestre));
List<Tipovehiculo> tipovehiculoList = new ArrayList<>();
tipovehiculoList.add(tipovehiculoServices.findById("BUS"));
solicitud.setTipovehiculo(tipovehiculoList);
solicitud.setEstatus(estatusServices.findById("SOLICITADO"));
String textsearch = "DOCENTE";
solicitud.setTiposolicitud(tiposolicitudServices.findById(textsearch));
solicitudSelected = solicitud;
} catch (Exception e) {
errorServices.errorMessage(nameOfClass(), nameOfMethod(), e.getLocalizedMessage());
}
return "";
}
Método save()
Incluir la validación de si existe o no.
Recuerde que no es necesario implementarlo en el Controller el método save ya que esta en el composite
O la validación que se considere necesaria
@Override
public String save() {
try {
List<Solicitud> list = solicitudRepository.findBy(new Document("usuario.username", loginController.getUsuario().getUsername()).append("fecha", solicitud.getFechahorapartida()));
if (!list.isEmpty()) {
JsfUtil.warningDialog(rf.getAppMessage("warning.view"), rf.getMessage("warning.yasolicitoviajeenestafecha"));
}
if (DateUtil.fechaMenor(solicitud.getFechahorapartida(), DateUtil.getFechaActual())) {
JsfUtil.warningDialog(rf.getAppMessage("warning.view"), rf.getMessage("warning.fechasolicitudmenorqueactual"));
return "";
}
//Lo datos del usuario
solicitud.setUserInfo(userInfoServices.generateListUserinfo(loginController.getUsername(), "create"));
if (solicitudRepository.save(solicitud)) {
//guarda el contenido anterior
revisionHistoryTransporteejbRepository.save(revisionHistoryServices.getRevisionHistory(solicitud.getIdsolicitud().toString(), loginController.getUsername(),
"create", "solicitud", solicitudRepository.toDocument(solicitud).toString()));
//enviarEmails();
//si cambia el email o celular del responsable actualizar ese usuario
if (!responsableOld.getEmail().equals(responsable.getEmail()) || !responsableOld.getCelular().equals(responsable.getCelular())) {
usuarioRepository.update(responsable);
//actuliza el que esta en el login
if (responsable.getUsername().equals(loginController.getUsuario().getUsername())) {
loginController.setUsuario(responsable);
}
}
// JsfUtil.successMessage(rf.getAppMessage("info.save"));
// reset();
} else {
JsfUtil.successMessage("save() " + solicitudRepository.getException().toString());
}
//Asigna la solicitud padre para las demas solicitudes
if (index.equals(0)) {
solicitud.setSolicitudpadre(solicitud.getIdsolicitud());
}
}
JsfUtil.successMessage(rf.getMessage("info.savesolicitudes") + " : " + solicitudesGuardadas.toString() + " " + rf.getMessage("info.solicitudesde") + solicitud.getNumerodevehiculos());
reset();
} catch (Exception e) {
errorServices.errorMessage(nameOfClass(), nameOfMethod(), e.getLocalizedMessage());
}
return "";
}
Formulario
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html>
<ui:composition template="/layout/template.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:b="http://bootsfaces.net/ui"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:e="http://xmlns.jcp.org/jsf/composite/extensions"
xmlns:jmoordbjsf="http://jmoordbjsf.com/taglib">
<ui:define name="content">
<!--<h:outputStylesheet library="bsf" name="css/thumbnails.css"/>-->
<style>
.thumbnail { max-width: 100%; }
img.thumbnail:hover, img.thumbnail:focus {
border: 1px solid;
border-color: #428BCA;
}
</style>
<b:form id="form" prependId="false" rendered="#{loginController.loggedIn and applicationMenu.solicitudDocentePorAdministrador.create}" onkeypress="if (event.keyCode == 13) {
return false;
}">
<h:panelGroup id="content" layout="block">
<jmoordbjsf:messages id="msg"/>
<b:panel title="#{msg['titleview.solicitudmanualdocente']}" look="primary" >
<b:panelGrid id="panel" colSpans="2,10" size="xs" >
<p:outputLabel value="#{msg['field.lugarllegada']}" />
<jmoordbjsf:inputText span="8" value="#{solicitudManualDocenteController.solicitud.lugarllegada}" id="lugarllegada" label="#{msg['field.lugarllegada']}" />
<p:outputLabel value="#{msg['field.recursossolicitados']}" />
<p:chips value="#{solicitudManualDocenteController.solicitud.recursossolicitados}" id="recursossolicitados" title="#{msg['field.chips']}" />
<p:outputLabel value="#{msg['field.observaciones']}" />
<b:inputTextarea rows="2" span="8" value="#{solicitudManualDocenteController.solicitud.observaciones}" id="observaciones" label="#{msg['field.observaciones']}" />
<p:outputLabel value="#{msg['field.sugerencia']}" style="font-size: 25;" />
<b:dataTable value="#{sugerenciaController.sugerenciaDataModel}"
var="item"
id="dataTable2"
paginated="false"
onpage="console.log('page');">
<b:dataTableColumn value="#{item.descripcion}" label="#{msg['field.descripcion']}"/>
</b:dataTable>
<jmoordbjsf:toolbarnewsavereturn
renderedNew ="#{applicationMenu.solicitudDocentePorAdministrador.create}"
rendererList="#{applicationMenu.solicitudDocentePorAdministrador.list}"
renderedSave="#{applicationMenu.solicitudDocentePorAdministrador.create}"
controller="#{solicitudManualDocenteController}"
entity="#{solicitudManualDocenteController.solicitud}"
repository="#{solicitudManualDocenteController.solicitudRepository}"
/>
</b:panelGrid>
</b:panel>
</h:panelGroup>
</b:form>
<jmoordbjsf:denegado renderedcondition="#{!loginController.loggedIn or !applicationMenu.solicitudDocentePorAdministrador.create}" />
<br/><br/><br/>
</ui:define>
</ui:composition>
Last updated
Was this helpful?