2012-03-29 18 views
8

hi im nuovo di jsf enviroment, sto cercando di aggiornare un primadine ringhiare e quindi reindirizzare a una pagina da un'azione commandButton.Come utilizzare Primefaces 'p: ringhiare e reindirizzare a una pagina

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

Il codice bean gestito la sua

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

Questo solo redirectme ​​alla pagina, ma mi non mostra il messaggio ringhio, ho provato che se cambiare il mio metodo di non restituire la pagina il messaggio fa spettacolo.

Stavo cercando di aggiornare il ringhio della pagina che sto reindirizzando ma è impossibile suppongo.

penso che quando reindirizzamento ho perso la funzionalità di aggiornamento perché im in nuova pagina ora.

C'è un modo per dire a jsf di eseguire prima l'aggiornamento e poi il reindirizzamento?

Spero che mi può aiutare, grazie in anticipo

risposta

42

messaggi si perdono durante il reindirizzamento. È possibile utilizzare il flash per conservare i messaggi.

Aggiungere il seguente prima di ritornare dal vostro metodo di azione:

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

Si noti che questo approccio ha una peculiare bug quando viene utilizzato con Mojarra: non funzionerà poi il reindirizzamento va a un percorso diverso. Se la pagina corrente e quella di destinazione si trovano nello stesso percorso (la stessa cartella nell'URL), funzionerà correttamente. Vedi anche http://java.net/jira/browse/JAVASERVERFACES-1877 – BalusC

1

Aggiungere un altro ringhio alla pagina di reindirizzare

come questo <p:growl id="growlmsg2" showDetail="true" sticky="true" autoUpdate="true"/>

0

Poiché Flash ha bug, la mia soluzione è quella di rendere un pulsante di reindirizzamento separato che verrà visualizzato dopo aver visualizzato il messaggio:

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. 
} 
Problemi correlati