Как добавить FacesMessage во время загрузки страницы? Использование @PostConstruct, похоже, не работает

В методе @PostConstruct вспомогательного компонента я вызываю EJB, который может возвращать некоторые сообщения, которые я хочу отобразить на странице, через p:messages. Однако, даже если я добавлю FacesMessages, например. Сообщения FacesContext.getCurrentInstance().addMessage(... ), p:не обновляются сообщениями FacesMessages.

Если вместо этого я вызываю вызов EJB для действия со страницы, (скажем, пользователь нажимает кнопку на странице, которая вызывает метод, который вызывает EJB, а затем добавляет FacesMessage(s)), тогда сообщения отображаются с использованием сообщений p:, как и ожидалось.

Как добавить сообщения Faces во время @PostConstruct, чтобы они отображались при первоначальном отображении страницы?

Код:

Page1Controller.java:

@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"));      
    }

}

page1.xhtml

   <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>
19
задан BalusC 12 November 2019 в 10:45
поделиться