Validación de acciones sobre botones en Jsf con Icefaces

En este tutorial veremos como simplificar nuestras vistas gracias al componente de Icefaces panelValidation que nos permite definir una ventana modal emergente sencilla ( aceptar / cancelar ) asociada a la acción de un botón.

Validación de botones con ICEFACES en JSF

0. Índice de contenidos.

1. Introducción

Este tutorial trata de dar solución a una necesidad recurrente en la mayoría de desarrollos con JSF.
Ciertas acciones requieren de una confirmación a la hora de realizarse.

Veamos un ejemplo:
Un usuario quiere borrar un registro previamente seleccionado en un listado, pulsa sobre el botón Borrar y se muestra un mensaje de confirmación, si acepta se procede con la eliminación si cancela se vuelve al listado sin cambios.

Esta operativa no deberían requerir complejidad, y una forma sencilla y elegante de darle solución es la que te proponemos.
Mediante el componente de ICEFACES PanelConfirmation mostramos un panel directamente asociado al botón.
Una de las grandes ventajas es que dicho panel de confirmación resulta totalmente transparente para el controlador.

2. Entorno

El tutorial está escrito usando el siguiente entorno:

3. Descripción del componente

En ICEFACES tenemos el componente commandButton cuyo atributo panelConfirmation nos da la posiblidad de asignarle un panel de confirmación
que definimos en la propia página. Dicho panel contiene una serie de atributos que nos pemiten definir los valores de los campos del mensaje bloqueante.

Otra gran utilidad de este panelConfirmation es su total compatibildad con el atributo immediate que nos permite saltar las validaciones
de JSF.

Aquí tenemos la página del componente.

4. Ejemplo práctico

En el ejemplo planteado al comienzo de este tutorial (botón de borrado) al pular borrar realizamos una acción que no requiere la validación del formulario, ya que para eliminar un registro no debe ser necesario cumplir con las valicaciones.
En cambio un botón de guardado requiere de reafirmación y validación de los datos.

Botón de guardado con un panel de confirmación emergente, el atributo immediate por defecto toma valor «false».

	<ice:commandButton id="saveButton" 
						type="submit"
						value="#{msg['btn.save']}"
						action="#{editUser.save}"
						panelConfirmation="savePanelConfirmation" />
	

Botón de borrado con un panel de confirmación emergente.

	<ice:commandButton id="deleteButton" 
						type="submit"
						value="#{msg['btn.delete']}"
						action="#{editUser.delete}"
						immediate="true"
						panelConfirmation="deletePanelConfirmation" />											

Definición de los paneles asociados a los botones anteriores.

												
	<ice:panelConfirmation id="savePanelConfirmation"
							acceptLabel="#{msg['btn.yes']}"  
							cancelLabel="#{msg['btn.no']}"
							title="#{msg['editUser.confirm.save.title']}"  
							message="#{msg['editUser.confirm.save.message']}"  
							draggable="false" />

	<ice:panelConfirmation id="deletePanelConfirmation"
							acceptLabel="#{msg['btn.yes']}"  
							cancelLabel="#{msg['btn.no']}"
							title="#{msg['editUser.confirm.delete.title']}"  
							message="#{msg['editUser.confirm.delete.message']}"  
							draggable="false" />
							

Captura del panelValidation asociado al botón de borrado.

5. Conclusiones

Tras esta breve introducción al componente, vemos lo sencillo que resulta validar acciones de forma que resulten totalmente transparentes al controlador.

Estos paneles son muy sencillos de definir y vincular a los botones, aportando internacionalización y funcionalidad extra.

Espero os sea de utilidad.

Comentarios

Un comentario

  1. Muchísimas gracias, me sirve de mucho, pero tengo una duda no tienes los fuentes…No me queda claro si la definición de los paneles debe hacerse en el mismo archivo, voy a probar, pero aun así siempre seria importante tener los fuentes, como ejemplo de referencia.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

He leído y acepto la política de privacidad

Información básica acerca de la protección de datos

  • Responsable: IZERTIS S.A.
  • Finalidad: Envío información de carácter administrativa, técnica, organizativa y/o comercial sobre los productos y servicios sobre los que se nos consulta.
  • Legitimación: Consentimiento del interesado
  • Destinatarios: Otras empresas del Grupo IZERTIS. Encargados del tratamiento.
  • Derechos: Acceso, rectificación, supresión, cancelación, limitación y portabilidad de los datos.
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad

Consultor tecnológico de desarrollo de proyectos informáticos.

¿Quieres publicar en Adictos al trabajo?

Te puede interesar

02/03/2026

José Antonio Sánchez Segovia

Zephyr es un RTOS open source respaldado por la Linux Foundation que permite desarrollar dispositivos embebidos conectados, eficientes y escalables, facilitando el paso de prototipo a producto final con una arquitectura mantenible.

23/02/2026

Enrique Casado Díez

LoRa y LoRaWAN son tecnologías clave en el ecosistema IoT cuando se requiere largo alcance y bajo consumo energético. En este artículo analizamos su funcionamiento, Spreading Factor, link budget, arquitectura de red, frecuencias y clases de dispositivos, con un caso práctico real.

19/02/2026

Juan José Díaz Antuña

Copilot Chat es la forma más sencilla y segura de empezar a usar IA en Microsoft 365. En este artículo vemos cómo funciona, cómo activarlo y en qué se diferencia de Microsoft 365 Copilot, Copilot Studio y los Agentes Inteligentes, con ejemplos prácticos y una comparativa clara.