Patrón para redirigir a una página de error JSF ajax

Me gustaría que mi aplicación redirija a los usuarios que encuentran un error JSF ajax a una página de error personalizada.

Esto es lo que he emprendido y donde encontré algunos problemas:

var onError = function onError() {
   window.location = 'http://'+jQuery(location).attr('host')+'WEB-INF/include/error-pages/'+'ajaxError.html';//does not work of course!
 };
jsf.ajax.addOnError(onError);

¿Alguien puede dar consejos sobre cómo redirigir a una página ubicada dentro de la carpeta WEB-INF?

Saludos,

preguntado el 27 de agosto de 11 a las 14:08

1 Respuestas

No puedes. La /WEB-INF carpeta no está disponible públicamente. La especificación de la API de Servlet lo prohíbe, ya que generalmente es la carpeta que contiene los archivos de configuración y los archivos de plantilla que no se pueden presentar de forma independiente. Ponlo en algún lugar afuera /WEB-INF (y /META-INF) en contenido web público o crear una plantilla pública que incluya esa página de error.

¿Es realmente una página de inclusión como sugiere su ruta? ¿No es en realidad una página completa, ya que parece que intentas mostrarlos en todo su esplendor? Ese archivo definitivamente debería colocarse fuera /WEB-INF.

Respondido 27 ago 11, 19:08

especificaría un 5XX error-code en web.xml tiene algún efecto? - Varun Achar

@BalusC, Gracias. Entonces no lo serviré desde web-inf si no es posible. - balteo

@Varun, Gracias. Intenté eso, pero no funciona ya que los errores 500 parecen tratarse de manera diferente a los errores ajax. Por cierto, ¿qué código de error específico quiso decir además de 500? - balteo

500, 503 - Servicio no disponible o 504 - Tiempo de espera de puerta de enlace - Varun Achar

@Varun: eso se aplica solo a solicitudes síncronas. Para solicitudes asincrónicas (ajax), debe manejarlas mediante jsf.ajax.onError() en el lado del cliente o por una costumbre ExceptionHandler en el lado del servidor. - BalusC

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.