gpt4 book ai didi

ajax - 素面 : how to use growl for notifications without user interaction

转载 作者:行者123 更新时间:2023-12-05 00:50:19 25 4
gpt4 key购买 nike

我是 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>

测试咆哮.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 "));
}
}

非常感谢

最佳答案

这是可能的。当消息被添加到构造函数、@PostConstruct 或 bean 的 preRenderView 监听器上时,它会自动显示在页面上,您不必使用任何“onload”事件。您的代码的问题是您没有正确发送消息。你应该这样做:

FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "test", "test");  
FacesContext.getCurrentInstance().addMessage(null, msg);

addMessage 的第一个参数是发生错误的组件的 ID,如果是全局错误,则为 null。此外,如果在您的咆哮中您只想显示全局消息,并且您希望仅使用 p:message 为每个组件显示特定于组件的错误消息,您应该添加 globalOnly="true"咆哮。

关于ajax - 素面 : how to use growl for notifications without user interaction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11081971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com