2016-07-12 25 views
2

Ich arbeite mit Prime Faces und ich möchte Benutzer auf einer Indexseite starten, drücken Sie eine Taste für den Aufruf einer Funktion (registrarUsuario) zum Neuladen der Indexseite und zeigen Sie die Kontextnachricht. Mein Problem ist, dass meine Anwendung die Nachricht nicht anzeigt. Dies ist mein Code:Warum zeigt meine JSF-Anwendung die Kontextnachricht nicht an?

index.xhtml:

<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://xmlns.jcp.org/jsf/html" 
     xmlns:p="http://primefaces.org/ui" 
     xmlns:ui="http://xmlns.jcp.org/jsf/facelets" 
     xmlns:f="http://xmlns.jcp.org/jsf/core" 
     xmlns:b="http://bootsfaces.net/ui"> 
... 
<h:form> 
    <b:commandButton action = "#{registroUsuario.registrarUsuario}" value = "call function"/> 
</h:form> 
.... 

RegistroUsuario.java:

public void registrarUsuario() throws IOException, Exception { 
    try { 
     //another code 
     FacesMessage message = new FacesMessage(":D", "message"); 
     FacesContext context = FacesContext.getCurrentInstance(); 
     context.addMessage(null, message); 
    } catch (Exception e) { 
     FacesMessage message = new FacesMessage("Falla", e.toString()); 
     FacesContext context = FacesContext.getCurrentInstance(); 
     context.addMessage(null, message); 
    }finally{ 
     FacesContext.getCurrentInstance().getExternalContext().redirect("index.xhtml"); 
    } 

} 

Thank you!

Antwort

0

Da laut der Dokumentation PrimeButton showcase, der Button standardmäßig Ajax ist, müssen Sie den Update-Parameter mit der Ansicht, die Sie aktualisieren möchten, oder fügen Sie den Parameter ajax = "false"

<p:commandButton value="Ajax Submit" id="ajax" update="growl" actionListener="#{buttonView.buttonAction}" styleClass="ui-priority-primary" /> 
<p:commandButton value="Non-Ajax Submit" id="nonAjax" actionListener="#{buttonView.buttonAction}" ajax="false" /> 

Beachten Sie, wie die erste Option hat eine Update Attribute oder die zweiten ein ajax = "false"