我对 JSF/Primefaces 很陌生,所以也许我以错误的方式处理问题,而且我一直在搜索论坛,但没有运气。
我最大限度地简化了问题并使用了 Damian 的 @PostConstruct
所以要恢复,我希望在加载 test.xhtml 时,我的咆哮通知会弹出 -即没有用户交互......它没有出现,但是当你点击保存按钮时它会出现。
它确实通过了 sayHi() 但此时似乎并不知道容器。
WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
目的是在数据库访问失败时显示用户友好的咆哮通知。
我一定错过了一些我认为的基本原则:(
测试.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 "));
}
}
非常感谢