バッキングBeanの@PostConstructメソッドで、EJBを呼び出します。これにより、p:messagesを介してページに表示したいメッセージが返される場合があります。ただし、FacesMessages(FacesContext.getCurrentInstance()。addMessage(...)など)を追加しても、p:messagesはFacesMessagesで更新されません。
代わりに、ページからのアクションでEJBの呼び出しを呼び出すと(たとえば、ユーザーがページ上のボタンをクリックして、EJBを呼び出し、FacesMessageを追加するメソッドを呼び出す)、メッセージはpを使用して表示されます。 :期待どおりのメッセージ。
@PostConstruct中にFacesメッセージを追加し、ページが最初にレンダリングされたときにそれらを表示するにはどうすればよいですか?
コード:
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>