Mensajes en SAPUI5

En este post vamos a explicar la gestión de los mensajes dentro de nuestra aplicación SAPUI5, y para hacerlo de una manera eficiente vamos a conocer de la existencia del Message Manager.

Vamos a empezar explicando los dos principales tipos de mensajes que nos podemos encontrar en nuestra aplicación:

  • Mensajes de lado de cliente: creados desde la aplicación por alguna comprobación o validación respecto a una entrada de usuario y casi siempre referidos a alguno de los controles.
  • Mensajes de lado de servidor: creados a partir de las respuestas que manda el back-end tras una petición y referidos a datos bindeados.

Los mensajes tratan de notificar al usuario en qué estado se encuentra la aplicación en un determinado momento, y lo hacen conteniendo al menos la siguiente:

  1. ID: identificador del mensaje
  2. Tipo de mensaje: de Error, Éxito, Advertencia, Info.
  3. Texto: el texto del mensaje a mostrar.
  4. Objetivo: sobré qué elemento de la aplicación se refiere dicho mensaje.
  5. Procesador del mensaje: qué objeto maneja estos mensajes.

Además de esta información, un mensaje puede contener otra información opcional como la descripción, código, propiedad técnica o propiedad persistente.

Y aquí es donde aparece el Message Manager, para gestionar todos los mensajes de nuestra aplicación. Se trata de una instancia de la clase sap.ui.core.message.MessageManager que implementa el patrón Singleton.

Si estáis siguiendo mi blog y habéis llegado hasta aquí supongo que sabéis qué es el patrón singleton, pero por si hubiera que recordarlo un poco simplemente decir que lo que se trata es de que únicamente exista una instancia activa de dicha clase. Recuperamos dicha instancia con sap.ui.getCore().getMessageManager().

Con el Message Manager vamos a gestionar el ciclo de vida de los mensajes, y éste es diferente dependiendo del tipo de mensaje al que nos refiramos.

Mensajes de lado cliente

Estos mensajes se refieren a un determinado control, la mayoría son mensajes de validación. Al definir un elemento UI, le podemos asignar un tipo con unas determinadas restricciones y dependiendo del caso se pueden generar mensajes de validación.

Estos mensajes son manejados y procesados por el procesador de mensajes del control (tienen sus propios métodos) y se los propaga al Message Manager para que los gestione.

La creación de estos mensajes de forma autómatica se tiene que activar, y tenemos varias opciones para activarlos:

  • Desde el manifest.json, poniendo el valor de handleValidation dentro de sap.ui5 al valor true, por defecto es false.
  • Como parámetro cuando instanciamos el Component.
  • También se puede activar la creación automática de mensajes para algún control UI5 en concreto registrando el control en el Message Manager.

Además de estos mensajes de lado de cliente creados automáticamente, también existe la posibilidad de crear este tipo de mensajes de forma manual y añadirlos directamente al Message Manager:

Mensajes de lado servidor

Como ya sabréis de los diferentes tipos de modelos que tenemos para nuestras aplicaciones SAPUI5, el modelo oData es el modelo de servidor y es por ello, que este tipo de mensajes se refieren a las respuestas generadas desde back-end a través de los modelos oData.

El v2.ODataModel soporta la transformación automática de los mensajes de servidor a través de oDataMessageParser que además los propaga hacia el Message Manager. Es decir, este MessageParser es una interfaz vinculada directamente el oDataModel que transforma los mensajes de los servicios oData desde el back-end.

Este oDataMessageParser es creado automáticamente por cada modelo oData que se instancie, pero existe la posibilidad de implementar uno a medida por si el comportamiento fuese especial por cualquier motivo.

Además de los mensajes transformados y propagados al Message Manager directamente por las respuestas desde back-end, existe la posibilidad de crear nuestros propios mensajes y añadirlos como si fueran mensajes del lado del servidor. Para ello tenemos que usar una instancia de un modelo oData existente como el procesador de mensajes, registrarlo en el Message Manager y posteriormente añadir el mensaje pertinente tal y como se muestra a continuación:

Todos estos mensajes que estoy indicando que se propagan hacia el Message Manager, se almacenan en un modelo de mensajes de tipo JSON, que podemos utilizar como cualquier modelo para bindear nuestros datos. Para acceder a la instancia de dicho modelo utilizamos: sap.ui.getCore().getMessageManager().getMessageModel().

Tenemos diferentes elementos UI5 para poder mostrar estos mensajes, como el Message Popover:

Un buen manejo de los mensajes en nuestras aplicaciones UI5 significará una mejora de la experiencia de usuario, y desde ahora espero que no haya excusa.

2 respuestas a “Mensajes en SAPUI5

Add yours

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.

Blog de WordPress.com.

Subir ↑