Gestión de excepciones en Struts 2

Existen muy pocas diferencias en la gestión de excepciones entre las versiones 1 y 2 de Struts. En este documento se describen los temas que hay que observar.

De fondo

Flujo de excepción:
El flujo básico para la gestión de excepciones en la versión 2 es el mismo que el flujo de Struts 1 y funciona de la siguiente manera:
  1. Cuando la lógica interna de invocación detecta una excepción, la excepción se ajustará y se manejará en BaseAction. En la lógica de gestión, se creará e invocará una nueva unidad de ejecución de errores, que posteriormente contribuirá a generar una vía de acceso de reenvío de errores.
  2. Para la vía de acceso de error, la infraestructura de Struts 2 asumirá el control y direccionará la página a un resultado de error preconfigurado. Puede ser una configuración de ubicación local o global.
  3. Después de que se envíe una solicitud de representación de página, se ejecutará un JSP de gestión de errores que genera resultados de error para que los consuman los navegadores.

En comparación con Struts 1, la única diferencia se produce en el modo en que se colocan la excepción y los mensajes en la infraestructura predeterminada de Struts.

En Struts 1, BaseAction coloca la excepción en los atributos de HttpServletRequest invocando el método saveErrors() de acción. Si más adelante un cliente desea consumir la información de error de una página JSP, el cliente puede utilizar el código <html:errors/> para acceder a la información de excepción.

Struts 2 utiliza una nueva etiqueta <s:actionerrors/> para ayudar a mostrar los mensajes de error en el frontal de la página.

El contenido JSP de la versión 1 tendrá esta apariencia:
<logic:messagesPresent message="false">
    <html:errors/>
</logic:messagesPresent>
Por el contrario, el contenido de la versión 2 es similar al siguiente:
<s:if test="hasActionErrors()">
   <div>
      <s:actionerror/>
   </div>
</s:if>