私は JSF/Primefaces にかなり慣れていないので、問題を間違った方向に持っている可能性があり、フォーラムをかなり探し回っていますが、うまくいきませんでした。
問題を最大限に単純化し、ダミアンの@PostConstructを使用しました
再開するには、test.xhtml をロードすると、うなり声の通知がポップアップするようにしたいと思います。つまり、ユーザーの操作なしで...表示されませんが、保存ボタンをクリックすると表示されます。
sayHi() を通過しますが、その時点でコンテナーを認識していないようです。
WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
目的は、データベース アクセスが失敗した場合にうなり声でユーザー フレンドリーな通知を表示することです。
私が信じているいくつかの基本原則が欠けているに違いありません:(
test.xhtml
<h:form id="form">
<p:growl id="growl" showDetail="true" showSummary="true" sticky="true" />
<h:outputLabel value="#{testGrowl.message}" />
<p:commandButton value="Save" actionListener="#{testGrowl.save}" update="growl" />
</h:form>
TestGrowl.java
@ManagedBean
public class TestGrowl {
private String message;
public TestGrowl()
{
//sayHi(); commented to try with @PostConstruct
message = "we've been in the TestGrowl constructor";
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public void save(ActionEvent actionEvent) {
sayHi();
}
@PostConstruct
private void sayHi(){
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage("Successful", "Hello "));
}
}
どうもありがとう