2016-10-26 3 views
0

Ich habe ein PrimeFaces Nachrichten Komponente <p:commandButton update=":messages", die nicht p:messages nicht angezeigt, nachdem Sie das Formular absenden, aber wenn ich update="@all" verwenden stattdessen tut es Update p:messages und ich kann die Nachrichten sehen angezeigt.primefaces p: command Update Eigenschaft nicht p aktualisieren:

Ich habe versucht, viele andere Kombinationen wie update="messages", update="NewRegistryForm:messages", update="@form :messages", render=":messages" ... aber nichts anderes scheint zu arbeiten. Irgendeine Idee, warum das passieren könnte?

Auf RegistryInputNewBean.processRequest ich aktualisieren Sie einfach die Nachrichten-Komponente wie folgt aus:

FacesContext.getCurrentInstance().addMessage(
    null, 
    new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "error_processing_request") 
); 

mytemplate.xhtml, mit p:messages, ist so etwas wie dieses:

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:p="http://primefaces.org/ui" 
    lang="en" 
> 
    <f:view contentType="text/html" encoding="UTF-8" locale="en"> 
     <h:head> 
      <title>test</title> 
     </h:head> 
     <h:body id="pageBody"> 
      <p:messages id="messages" showDetail="true" autoUpdate="true" closable="true" showSummary="false"/> 
      <ui:insert name="content" /> 
     </h:body> 
    </f:view> 
</html> 

myform.xhtml ist wie folgt:

<!DOCTYPE html> 
<html 
    xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:p="http://primefaces.org/ui" 
> 
<ui:define name="content"> 
<ui:composition template="mytemplate.xhtml"> 
     <h:form id="NewRegistryForm"> 
       <p:commandButton 
        id="sendButton" 
        type="submit" 
        action="#{registryInputNewBean.processRequest}" 
        update="@all" 
        style="display:none" /> 
     </h:form> 
</ui:composition> 
</ui:define> 
</html> 

Antwort

0

Die p:messages ist nicht in einem Formular, deshalb wird die Schaltfläche die Komponente nicht allein aktualisieren, nur wenn Sie @all setzen, die alle Komponenten auf der Seite aktualisieren.

Wenn Sie eine andere Form gebracht, die die p:message innen enthalten, werden Sie in der Lage sein, die Komponente mit einem update="fooForm:fooMessages"

0

Sie auf der Bohne Ja

Wie

RequestContext rc = RequestContext.getCurrentInstance(); 
rc.update("id"); 
+0

aktualisieren zu aktualisieren, könnten Sie , aber würde das zu einem anderen Verhalten führen als die Verwendung von 'update' auf einem' p: commandButton'? –

Verwandte Themen