etiquetas jsf jsf-2 myfaces

etiquetas - Preservar mensajes JSF después de una redirección



jsf etiquetas (3)

Tengo una página JSF (usando MyFaces 2.0) que hace un poco de recopilación de datos la primera vez que se muestra. Si no puede encontrar cierta información, se supone que debe proporcionar un mensaje a ese efecto y redireccionar a una página diferente. He intentado utilizar la solución que se encuentra aquí Preservar FacesMessage después de redirigir para la presentación a través de <h: message> en JSF (setKeepMessages (true)) pero los mensajes no se muestran después de la redirección. La única diferencia que puedo elegir es que no estoy usando una regla de navegación, estoy llamando a la llamada de redirección () en el contexto externo porque esto no ocurre en una acción normal.

Código relevante:

public void redirectToPageWithMessage(String inPage, String message, FacesMessage.Severity severity){ getFlash().setKeepMessages(true); addMessage(message, severity); try { getFacesContext().getExternalContext().redirect(inPage); } catch (IOException e) { e.printStackTrace(); } }

Desafortunadamente, esto no parece estar funcionando. La redirección ocurre muy bien, pero la etiqueta <messages /> no muestra el mensaje. ¿Hay algo diferente sobre la forma en que redirige () que impide que esto funcione?


El código que guarda los mensajes se ejecuta después de que finaliza la fase (ver Flash.doPostPhaseActions (FacesContext)). Por lo tanto, se espera que no funcione, pero tal vez pueda llamar a Flash.doPostPhaseActions antes de la redirección. La nota no es una solución "limpia", pero es posible.



Tuve el mismo problema y no lo ExternalContext.redirect() utilizando ExternalContext.redirect() sino para jugar con el resultado de tus acciones.

Es decir, mi acción llamada por mis botones devuelve un String (el resultado) que indica las reglas de navegación para pasar a la página siguiente. Con ese sistema, los mensajes se conservan.