Wie kann ich während @PostConstruct Faces Messages hinzufügen?

In der @PostConstruct-Methode eines Backing Beans rufe ich einen EJB auf, der möglicherweise einige Nachrichten zurückgibt, die ich über p: messages auf der Seite anzeigen möchte. Selbst wenn ich jedoch die FacesMessages hinzufüge, z. FacesContext.getCurrentInstance (). AddMessage (...), p: messages wird nicht mit den FacesMessages aktualisiert.

Wenn ich stattdessen den Aufruf des EJB für eine Aktion von der Seite aus aufrufe (z. B. wenn ein Benutzer auf eine Schaltfläche auf der Seite klickt, die eine Methode aufruft, die den EJB aufruft und dann die FacesMessage (s) hinzufügt), werden die Nachrichten mit p angezeigt : Nachrichten wie erwartet.

Wie füge ich während @PostConstruct Faces Messages hinzu und lasse sie beim ersten Rendern der Seite anzeigen?

Code:

Page1Controller.java:

<code>@ManagedBean
public class Page1Controller
{
    @PostConstruct
    public void init()
    {
        FacesContext.getCurrentInstance().addMessage(null, 
            new FacesMessage("Test Message from @PostConstruct"));
    }

    public String getValue()
    {
            return "Some Value";
    }

    public void triggerMessage(ActionEvent event)
    {
            FacesContext.getCurrentInstance().addMessage(null, 
                    new FacesMessage("Test Message from Trigger Button"));      
    }

}
</code>

page1.xhtml

<code>   <h:form>
        <p:messages showDetail="true" showSummary="true" autoUpdate="true"/>
        <h:outputText value="#{page1Controller.value}"/>
        <br/>
        <p:commandButton value="Trigger Message" 
                         actionListener="#{page1Controller.triggerMessage}"/>  
   </h:form>
</code>

Antworten auf die Frage(3)

Ihre Antwort auf die Frage