jsf 2 - p: poll bloquea la navegación a una página dentro de un ExceptionHandler personalizado
jsf-2 primefaces (1)
puedes rodear tu código java con un try catch y en el catch block:
FacesContext.getCurrentInstance().getExternalContext().redirect("foo.xhtml");
Si esto no responde a su pregunta, es posible que desee dar más código, y trate de explicar mejor su problema
Escribí mi propio manejador JSF y lo obtuve del ExceptionHandlerWrapper. Dentro del método handle tengo el siguiente código:
NavigationHandler navigationHandler = fc.getApplication().getNavigationHandler();
navigationHandler.handleNavigation(fc, null, "error");
fc.renderResponse();
El problema es que en una página que tiene un elemento de encuesta de primos:
<p:poll ajax="true" interval="10" widgetVar="pollPing" autoStart="false" oncomplete="remoteCommandPing()"/>
el navegador se redirecciona solo después del "intervalo" de segundos. Esto significa que tengo que esperar hasta 10 segundos en mi caso para ser redirigido. Dentro del controlador de errores, necesito de alguna manera detener cualquier solicitud actual al servidor (en mi caso, hecho por la encuesta) y redirigir de inmediato. Traté de usar el siguiente código antes de la navegación:
FacesContext fc = FacesContext.getCurrentInstance();
ExternalContext extCtx = fc.getExternalContext();
extCtx.responseReset();
pero todo lo que consigo es:
XML Parsing Error: no element found
lo que significa que la respuesta del servidor estaba vacía (aparentemente debido a extCtx.responseReset ();), después de lo cual no se produce una redirección a la página de error.
¿Alguien sabe cómo simplemente detener todas las solicitudes y forzar la redirección a una página gestionada por caras? Probé varias soluciones que implican setViewRoot y algunos fragmentos de código de FullAjaxExceptionHandler.java de OminFaces sin suerte. Gracias.