Diferencia entre revisiones de «Struts, AJAX y Global Exceptions»

De Dos Ideas.
Saltar a: navegación, buscar
(Página creada con ' Supongamos que tenemos una aplicación con Struts, en donde definimos diferentes excepciones globales ante errores no esperados: <code> <global-exceptions> <exception…')
 
Línea 1: Línea 1:
Supongamos que tenemos una aplicación con Struts, en donde definimos diferentes excepciones globales ante errores no esperados:
+
Supongamos que tenemos una aplicación con Struts, en donde definimos diferentes excepciones globales ante errores no esperados:
+
 
 
<code>
 
<code>
 
<global-exceptions>
 
<global-exceptions>
Línea 15: Línea 15:
 
</code>  
 
</code>  
  
Y por otro lado, tenemos ciertas páginas que cargan contenido utilizando [[AJAX]] ([[Jquery]]), y haciendo referencia a actions de Struts. Por ejemplo:
+
Y por otro lado, tenemos ciertas páginas que cargan contenido utilizando [[AJAX]] ([[Jquery]]), y haciendo referencia a actions de Struts. Por ejemplo:  
  
 
<code>
 
<code>
Línea 32: Línea 32:
 
)
 
)
 
</script>
 
</script>
</code>
+
</code>  
  
 
Qué sucedería en el caso de que la ejecución de dicha acción produzca un error no esperado declarado como "global-exception"? La respuesta es: se va a cargar en el div contenedor de la respuesta [[AJAX]] toda la página de error.  
 
Qué sucedería en el caso de que la ejecución de dicha acción produzca un error no esperado declarado como "global-exception"? La respuesta es: se va a cargar en el div contenedor de la respuesta [[AJAX]] toda la página de error.  
  
En el caso de que esto no sea el comportamiento deseado, una posible solución es declarar la excepción localmente en la configuración del action:
+
En el caso de que esto no sea el comportamiento deseado, una posible solución es declarar la excepción localmente en la configuración del action:  
  
 
<code>
 
<code>

Revisión del 14:22 9 nov 2010

Supongamos que tenemos una aplicación con Struts, en donde definimos diferentes excepciones globales ante errores no esperados:

<global-exceptions>

       <exception
           key="errors.general"
           type="java.lang.Exception"
           path="/UncaughtError.do"/>
       

<exception

           key="errors.general"
           type="java.lang.NoClassDefFoundError"
           path="/FatalError.do"/>

</global-exceptions>

Y por otro lado, tenemos ciertas páginas que cargan contenido utilizando AJAX (Jquery), y haciendo referencia a actions de Struts. Por ejemplo:

<script type="text/javascript"> $(document).ready(function () {

   //Ejecuto la consulta AJAX
   $.ajax({
       type: "POST",
       url: "/MiAcccion.do",
       success: function(msg){
           //Cargo la ventana con la respuesta
           $('#divContenedor').html(msg);
       }
   });

} ) </script>

Qué sucedería en el caso de que la ejecución de dicha acción produzca un error no esperado declarado como "global-exception"? La respuesta es: se va a cargar en el div contenedor de la respuesta AJAX toda la página de error.

En el caso de que esto no sea el comportamiento deseado, una posible solución es declarar la excepción localmente en la configuración del action:

<action

           path="/MiAction"
           type="com.dosideas.web.actions.MiAction">
           
           <exception key="errors.mi.action" type="java.lang.RuntimeException" path="errorGenerico.jsp" />
           <forward name="success" path="success.jsp" />
           <forward name="error" path="errorGenerico.jsp" />
       </action>