【问题标题】:autoUpdate not working for p:growl and p:messages in primefaces自动更新不适用于 primefaces 中的 p:growl 和 p:messages
【发布时间】:2013-09-06 18:12:19
【问题描述】:

我正在尝试使用属性 autoUpdate 测试 p:growl 和 p:messages,但它不起作用,虽然它是一个非常简单的代码。

我的页面(primes.xhtml):

<h:head/>
<h:body>
    <h:form>
        <p:messages autoUpdate="true"/>
        <p:commandButton action="#{dateBean.testErr}"/>
    </h:form>
</h:body>

DateBean 类:

@ManagedBean
public class DateBean {

    public String testErr(){

        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, new FacesMessage("test error"));
        return null;
    }
}

每当我点击命令按钮时,服务器都会给我以下警告:

“警告:有一些未处理的 FacesMessage,这意味着不是每个 FacesMessage 都有机会被渲染。 这些未处理的 FacesMessage 是:- 测试错误”

但是页面中不显示消息,咆哮声也不显示。

【问题讨论】:

  • 无法重现 Mojarra 2.1.26 和 PrimeFaces 3.5 的问题。究竟是哪个 JSF impl/version 和 PF 版本? ajax 响应正文包含什么?
  • 我正在使用 Myfaces 2.0,该操作应该什么都不做,只是添加一条新消息,以便在添加消息时由 p:messages 或 p:growl 显示。
  • MyFaces 到底是哪个版本? “2.0”只是一个规范版本。是2.0.0吗?这是古代! (差不多 4 岁)目前已经是 2.1.12。您是否尝试过仅将其排除在原因之外?另外你还没有告诉PF版本和ajax响应体。
  • 抱歉,忘记指定它是 2.0.2 和 primefaces 3.5 我将尝试更新的实现,看看会发生什么。我不确定 ajax 响应(除了上面的代码进入服务器并运行操作之外,对 ajax 不太了解,因为没有指定要更新的任何内容都没有更新),我认为 autoUpdate 属性将检测到发送了一个 ajax 请求,因此应该更新消息标签)
  • Ajax 响应正文在浏览器的 webdeveloper 工具集的网络监视器中可见(在 Chrome/Firefox/Firebug/IE>=9 中按 F12)

标签: jsf-2 primefaces


【解决方案1】:

最新: Primefaces 7 不支持此 p:growl 和 p:messages autoUpdate="true" 属性。只是它不起作用,您会收到上面的服务器警告:“WARNING: There are some unhandled FacesMessages,...”

使用这个而不是 autoUpdate="true" 属性:

<p:messages>
    <p:autoUpdate />
</p:messages>

还有这个

<p:growl id="growl" showDetail="true" sticky="true">
    <p:autoUpdate />
</p:growl>

另见:

【讨论】:

  • 非常感谢迁移指南的链接。它经常被提及,但在 Github 上的 7.0 版本中没有链接,并且项目网站的文档部分中没有迁移指南部分。
猜你喜欢
  • 2012-01-27
  • 1970-01-01
  • 1970-01-01
  • 2016-04-05
  • 2018-04-19
  • 1970-01-01
  • 2014-10-07
  • 2014-01-17
  • 1970-01-01
相关资源
最近更新 更多