Diferencia entre revisiones de «Struts, AJAX y Global Exceptions»
De Dos Ideas.
Línea 1: | Línea 1: | ||
− | Si tenemos una aplicación con Struts, donde ante errores no esperados definimos diferentes excepciones globales: | + | Si tenemos una aplicación con Struts, donde ante errores no esperados definimos diferentes excepciones globales: |
<code> | <code> | ||
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: | |
<code> | <code> |
Revisión actual del 14:35 9 nov 2010
Si tenemos una aplicación con Struts, donde ante errores no esperados definimos diferentes excepciones globales:
<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>
Con este escenario, al producirse un error no esperado en la ejecución de dicha acción, se va a cargar en el div contenedor toda la página de error.
Si no deseamos que nuestra aplicación tenga este comportamiento, 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>