Lanzamiento de mensajes aplicando HTML - Launching messages using HTML /ADF
Algunas veces presentamos la necesidad de formatear nuestros mensajes en ADF con colores, o negritas, o infinidad de formatos, para así hacer mas legible la información al usuario.
Para lograrlo podemos hacerlo de la siguiente manera:
Primero crearemos el método que nos permite mostrar el mensaje en el FaceContext
Como vemos es un método sencillo, que recibe como parámetros StringBuilder que nos permite un mejor manejo de cadenas y ademas agregar etiquetas HTML, y un entero que es el tipo de mensaje a mostrar (Error, Información, Advertencia).
Aplicar el método es bastante sencillo, en mi caso lo use dentro de otro método que invoca un procedimiento almacenado y el procedimiento almacenado me devuelve el tipo de mensaje y el mensaje, por lo cual lo formateo desde la base de datos:
El mensaje lo devuelvo desde el PL/SQL de la siguiente manera:
Para lograrlo podemos hacerlo de la siguiente manera:
Primero crearemos el método que nos permite mostrar el mensaje en el FaceContext
/** * *Agrega mensaje al faceContext con la posibilidsad de formatearlo
* con html desde la base de datos, o bien desde java. * Encontramos un detalle de su uso en * Julian Gutierrez 04/08/2016 * @param message * @param severity */ public void showMessageFormatHTML(StringBuilder message,int severity) { FacesMessage.Severity sev; switch(severity){ case 0: sev = FacesMessage.SEVERITY_ERROR ; break; case 1: sev = FacesMessage.SEVERITY_WARN; break; case 2: sev = FacesMessage.SEVERITY_INFO; break; default: sev = FacesMessage.SEVERITY_INFO; break; } FacesMessage fm = new FacesMessage(message.toString()); fm.setSeverity(sev); FacesContext fctx = FacesContext.getCurrentInstance(); fctx.addMessage(null, fm); }
Como vemos es un método sencillo, que recibe como parámetros StringBuilder que nos permite un mejor manejo de cadenas y ademas agregar etiquetas HTML, y un entero que es el tipo de mensaje a mostrar (Error, Información, Advertencia).
Aplicar el método es bastante sencillo, en mi caso lo use dentro de otro método que invoca un procedimiento almacenado y el procedimiento almacenado me devuelve el tipo de mensaje y el mensaje, por lo cual lo formateo desde la base de datos:
public void crearPrenomAut() { String resultado = null; BindingContainer bindings = BindingContext.getCurrent().getCurrentBindingsEntry(); OperationBinding operationBinding = bindings.getOperationBinding("createPrenomAut"); {... Code ...} String[] result = (String[])operationBinding.execute(); StringBuilder message = new StringBuilder(result[1]); if (result[0].equals("2")) { showMessageFormatHTML(message,2); } }
El mensaje lo devuelvo desde el PL/SQL de la siguiente manera:
La variable PV_MESSAGE_TYPE es el tipo de mensaje (0 = error, 2= info, etc...) es un estándar de código pero lo explico para que entiendan mejor, y la variable PV_MESSAGE es el mensaje que se mostrara en el java, ambas son variables de salida en el procedimiento, son obtenidas en el java y manipuladas, reitero profundizo en esto para que tengan una mejor idea y vean como podemos darle formato con HTML desde la base de datos.
Como resultado tendríamos algo así:
Como vemos es algo muy sencillo, si solo deseamos hacerlo desde el java simplemente agregamos las etiquetas HTML directamente en la variable StringBuilder message.
Espero sea útil, cualquier duda escríbanme en los comentarios.
Comentarios
Publicar un comentario