Taller 9- Editar

Agregaremos la opción de editar un registro en el Controller

public String edit() {
        try {

            repositoryRevisionHistory.save(revisionHistoryServices.getRevisionHistory(persona.getCedula(),
                    "myusername",
                    "update", "persona", personaRepository.toDocument(persona).toString()));

            personaRepository.update(persona);
              JsfUtil.successMessage("Se actualizo el documento");
        } catch (Exception e) {
            JsfUtil.errorDialog("edit()", e.getLocalizedMessage());
        }
        return "";
    }

En el formulario list.xhtml debemos seleccionar un documento y pasarlo a un formulario nuevo con todos los datos.

view.xhtml

Tenemos varias formas de real izarlo

  • En la misma pagina mediante un dialogo

  • En otra pagina usando el mismo controller

  • En otra pagina usando un controller nuevo

‌

  • Creamos una pagina nueva llamada view.xhtml

  • Agregamos dos etiquetas y dos cajas de texto

  • Asociados al enity dentro del Controller

  • Agregar botones para regresar al index y para invocar la pagina list

Ejemplo con formulario y el mismo controller.

Si definimos el alcance del Controller como @ViewScoped, debemos guardar el valor seleccionado.

Creamos un método llamado go(Persona persona) y guardamos el entity seleccionado.

Jmoordb nos ofrece la clase JmoordbContext en la cual podemos guardar objetos en la sesión actual.

  public String prepare(Persona persona){
        try{
              JmoordbContext.put("persona", persona);
               JmoordbContext.put("action", "view");
       
        } catch (Exception e) {
            JsfUtil.errorDialog("edit()", e.getLocalizedMessage());
        }
        return "view";
      
    }

Modificar el init()

 if(JmoordbContext.get("action")!= null){
            String action = (String)JmoordbContext.get("action");
            if(action.equals("view")){
                persona = (Persona)JmoordbContext.get("persona");
            }
        }

En la pagina list.xhtml

Agregar un nuevo botòn

  <p:column>
                        <p:commandButton                                             
                            icon="fa-trash-o" 
                            value="Editar" 
                            process=":form:datatable" 
                            action="#{personaController.prepare(item)}" 
                            update=":form:datatable, :form:msg" > 

                        </p:commandButton>

Crear el archivo view.xhtml

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui">

    <f:view contentType="text/html">
        <h:head>
            <f:facet name="first">
                <meta content='text/html; charset=UTF-8' http-equiv="Content-Type"/>
                <title>Editar</title>
            </f:facet>
        </h:head>

        <h:body>


            <h:form  id="form" prependId="true">
                <p:messages  id="msg"/>
                <p:panelGrid columns="2">
                    <p:outputLabel value="Cedula"/>
                    <p:inputText value="#{personaController.persona.cedula}" disabled ="true" required="true"/>
                    <p:outputLabel value="Nombre"/>
                    <p:inputText value="#{personaController.persona.nombre}"  required="true"/>
                    <p:outputLabel value="Edad"/>
                    <p:inputText value="#{personaController.persona.edad}" required="true"/>
                </p:panelGrid>
                <p:row>
                    <p:column>
                          <p:commandButton value="edit"
                                 action="#{personaController.edit}"
                                 update=":form:msg, :form"/>
                    </p:column>
                    <p:column>
                         <p:commandButton value="list" action="list" immediate="true"/>
                    </p:column>
                    <p:column>
                         <p:commandButton value="index" action="index" immediate="true"/>
                    </p:column>
                </p:row>
              
                
              
            </h:form>

        </h:body>

    </f:view>
</html>

al dar clic en Editar nos muestra la pagina de EDITAR

Cambiamos el nombre y damos clic en el botòn Edit

Si presionamos el botón list para regresar al listado, observamos el registro actualizado

Recuerde que podemos ver el historial de revisiones

Podemos hacer una búsqueda del documento persona con id=3

Ejecutar desde la consola

mongo

use practica_history

db.revisionhistory.find({"document":"persona","id":"3"}).pretty()

Podemos ver el historial de cambios

Last updated

Was this helpful?