2012-03-29 92 views
8

Hola soy un poco nuevo en el entorno jsf, estoy tratando de actualizar un gruñido de caras principales y luego redirijo a una página desde una acción CommandButton.Cómo utilizar el p de Primefaces: gruñir y redireccionar a una página

<p:commandButton value="Guardar" action="#{AgendamientoMBean.procesaAgendamientoJ()}" 
update="growlDetalle" /> 

El código bean gestionado su

FacesContext context = FacesContext.getCurrentInstance(); 
    context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, descripcion, detalle)); 
    .... 
    .... 
    return "agp_bandeja_citas_llamadas?faces-redirect=true"; 

Esto sólo redirectme ​​a la página pero tampoco me muestre el mensaje gruñido, he probado que si cambiar mi método de no volver la página el mensaje aparezca.

Estaba tratando de actualizar el gruñido de la página que estoy redirigiendo, pero eso es imposible, supongo.

Creo que al redirigir perdí la funcionalidad de actualización porque ahora estoy en una nueva página.

¿Hay alguna manera de decirle a jsf que primero haga la actualización y luego redireccione?

espero que me puedan ayudar, gracias de antemano

Respuesta

42

Los mensajes se pierden durante la redirección. Puedes usar el flash para guardar mensajes.

Añadir lo siguiente antes de volver de su método de acción:

FacesContext context = FacesContext.getCurrentInstance(); 
context.getExternalContext().getFlash().setKeepMessages(true); 
+8

Tenga en cuenta que este enfoque tiene un error peculiar cuando se utiliza con Mojarra: no va a funcionar entonces la redirección va a un camino diferente. Si la página actual y la de destino están en la misma ruta (la misma carpeta en la URL), funcionará bien. Ver también http://java.net/jira/browse/JAVASERVERFACES-1877 – BalusC

1

Agregar otro gruñido a la página redirigir

como esto <p:growl id="growlmsg2" showDetail="true" sticky="true" autoUpdate="true"/>

0

Dado que Flash tiene errores, mi solución es hacer un botón de redirección separado que será golpeado después de mostrar msg:

HTML:

<h:form prependId="false"> 
    <p:growl /> 
    <p:button outcome="gotoABC" id="rdr-btn" style="display: none;" /> 
    <p:commandButton action="#{bean.process()}" update="@form" /> 
</form> 

Bean:

public void process(){ 
    addInfoMsg(summary, msgDetail); //Add msg func 
    RequestContext.getCurrentInstance().execute("setTimeout(function(){ $('#rdr-btn').click(); }, 3000);"); // 3 seconds delay. I put the script in Constants to config later. 
} 
Cuestiones relacionadas