В методе @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>