jmoordbjsf
  • Introduction
  • instalacion
  • Configurar jmoordb
    • Proyecto EJB
      • Entity
      • Repository
    • Proyecto Web
      • Controller
  • autocomplete
    • autocompleteWithCalendarDateTime
  • calendar
  • column
  • columnview
  • commandbuttonedit
    • commandbuttonedit
    • commandbuttonreturn
    • commandbuttonsave
  • template
    • csstemplate
    • jstemplate
    • metatemplate
  • date
  • toolbar
    • toolbarnew
    • toolbarnewsavereturn
    • toolbarview
    • toolbarnewdate
    • toolbarnewlowercase
    • toolbarsave
  • denegado
  • email
  • inputText
    • inputTextMeses
    • inputTextPago
    • inputTextPagoAutomatico
    • inputTextPagoAutomaticoSinSpan
    • inputTextPagoDialog
    • inputTextPagoPagare
  • label
    • labelDate
    • labelNumber
    • labelPago
    • labelPagoSinSpan
  • login
  • mesSelectOneMenu
  • messages
  • noyes
  • paginator
  • password
  • print
  • search
    • searchBetweenDate
    • searchDate
    • searchYesNo
  • selectOneMenu
  • sexo
  • view
  • yesno
  • schedule
    • cssschedule
    • jsschedule
  • Formularios
    • new.xhtml
      • Por llave primaria
      • Por otro atributo
      • Sin campo de validacion
    • view.xhtml
      • Rol view.xhtml
    • list.xthml
      • Rol list.xhtml
  • Controller
    • RolController.java con todos metodos implementados
    • save()
    • FacultadController.java
    • Metodos
    • isNew()
    • @Aspect
    • delete
    • init()
    • move()
  • Development
    • Clases como parametros y metodos en el composite
    • Crear composite distribuible con Maven
    • Agregar css
Powered by GitBook
On this page
  • Uso
  • Ejemplo 1: Guardar entity con llave primaria String.
  • RolController.java
  • Ejemplo 2: Guardar un entity con id autoincrementable
  • ColorController.java

Was this helpful?

  1. toolbar

toolbarsave

PrevioustoolbarnewlowercaseNextdenegado

Last updated 6 years ago

Was this helpful?

  • Crea el botón Guardar e invoca el método save() del controller

  • Se usa en los formularios new.xhtml métodos

  • No es necesario crear el código save() en cada Controller esta implementado dentro de la interfaz IController

  • beforeSave() lo implementamos para hacer operaciones antes de guardar el documento

  • afterSave(). Es un aspecto que inyectamos después de haber guardado el documento.

  • Recuerde haber configurado el LoginController para los atributos en el ExternalContext.

  • Internamente guarda el UserInfo en el entity actuali

Atributo

Type

Descripciòn

rendered

controller

type="java.lang.Object"

Controller

entity

type="java.lang.Object"

Entity

repository

type="com.avbravo.jmoordb.mongodb.repository.Repository"

Repositorio

searchbyfieldsecond

default="false" type="java.lang.Boolean"

indica si se debe buscar por un campo secundario

Uso

  <extension:save rendered="#{rolController.writable and applicationMenu.rol.create}"
                                        controller="#{rolController}"   
                                        entity="#{rolController.rol}"
                                        repository ="#{rolController.rolRepository}"
                                        primarykeyvalue="#{rolController.rol.idrol}"
                                        searchbyfieldsecond="false"
                                        fieldsecondaryname="activo"
                                        fieldsecondaryvalue="si"
                                        />

Ejemplo 1: Guardar entity con llave primaria String.

Modulo: Rol

Formulario: new.xhtml

  <jmoordbjsf:toolbarsave
                            rendered="#{rolController.writable and applicationMenu.rol.create}"
                            controller="#{rolController}"
                            entity="#{rolController.rol}"
                            repository="#{rolController.rolRepository}"
                            />

RolController.java

  • No tenemos que definir el método save(), se invocara el de la interface IController

  • Podemos usar beforeSave() si deseamos agregar atributos o realizar operaciones sobre el entity antes de guardarlo

  • En el ejemplo agregamos información al atributo UserInfo del entity antes de guardarlo

@Aspect
@Override
    public Boolean beforeSave(){
        try {

            return true;

        } catch (Exception e) {
               errorServices.errorMessage(nameOfClass(), nameOfMethod(), e.getLocalizedMessage());
        }
        return false;
    }
  • Si deseamos implementar el método en RolController.java

  • No es necesario ya que esta en la interface.

@Override 
    public String save() { 
        try {

            rol.setIdrol(rol.getIdrol().toUpperCase());
            Optional<Rol> optional = rolRepository.findById(rol);
            if (optional.isPresent()) {
                JsfUtil.warningMessage(rf.getAppMessage("warning.idexist"));
                return null;
            }

            rol.setUserInfo(userInfoServices.generateListUserinfo(loginController.getUsername(), "create"));
            if (rolRepository.save(rol)) {
                revisionHistoryStoreejbRepository.save(revisionHistoryServices.getRevisionHistory(rol.getIdrol(), loginController.getUsername(),
                        "create", "rol", rolRepository.toDocument(rol).toString()));
                JsfUtil.successMessage(rf.getAppMessage("info.save"));
                reset();
            } else {
                JsfUtil.successMessage("save() " + rolRepository.getException().toString());
            }

        } catch (Exception e) {
            errorServices.errorMessage(nameOfClass(), nameOfMethod(), e.getLocalizedMessage());
        }
        return "";
    }// </editor-fold>

Ejemplo 2: Guardar un entity con id autoincrementable

  • Se restringe por un campo secundario llamado descripción

  • No definimos método save en el controller.

  • El atributo idcolor es un autoincrementable que lo cargamos desde el beforeSave()

  • indicamos el parametro searchbyfieldsecond

 <jmoordbjsf:toolbarsave
                            rendered="#{colorController.writable and applicationMenu.color.create}"
                            controller="#{colorController}"
                            entity="#{colorController.color}"
                            repository="#{colorController.colorRepository}"
                            searchbyfieldsecond="true"

                            />
/>

ColorController.java

  • Definir el mètodo beforeSave()

@Aspect
@Override
  public Boolean beforeSave() {
        try {
            Integer identity = autoincrementableStoreejbServices.getContador("color");
            color.setIdcolor(identity);


            return true;
        } catch (Exception e) {
            errorServices.errorMessage(nameOfClass(), nameOfMethod(), e.getLocalizedMessage());
        }
        return false;
    }