如何在PrimeFaces中使用共享错误消息Dialog

时间:2013-10-31 08:39:37

标签: jsf-2 primefaces

在PrimeFaces中,当您想要显示错误消息时,您可以:

  1. 在查看命令组件中调用操作
  2. 在'update'属性中,您设置p:message或p:growl组件的id将显示消息
  3. 在支持Bean中,在动作函数中抛出一条消息
  4. 因此,错误消息将显示在重定向页面中,具有匹配id的消息组件中

    但是如果:

    1. 您希望在另一个页面中显示该消息,该页面不包含调用该操作的命令组件。
    2. 该操作可以重定向到许多不同的页面,具体取决于某些Backing bean Logic。
    3. 不会从命令组件调用操作,至少不是直接
    4. 我想过把一个带有特定id的p:message组件放在每个xhtml页面中。但这并不一定涵盖第三种情况。

      例如,可能有一个函数检查与另一个Web服务的连接。许多不同的操作可能会引发连接错误。

      • 或会话到期
      • 或拒绝许可

      您如何管理此类通用错误消息?

2 个答案:

答案 0 :(得分:1)

您可以将公共<p:dialog><h:message>放在用于所有网页的模板文件中,并为其指定唯一ID。这样,它将为使用该模板的所有页面呈现。

这假设您使用的是模板。

更新:如果您希望以编程方式更新组件,可以使用RequestContext#update()

进行更新

例如

if (someErrorCondition) {
    RequestContext.getCurrentInstance().update("errorDialogId");
}

其中errorDialogId是常见错误对话框的ID。

如果您打算使用此方法,则需要从命令组件中删除update属性。

答案 1 :(得分:0)

为什么不使用RequestContext#showMessageInDialog(FacesMessage)

根据用户指南:

  

在对话框中显示FacesMessages是一种常见的情况,其中a   facesmessage需要首先添加到上下文中,对话框内容   包含消息组件需要更新,最后是对话框   与客户端api一起显示。 DF(Dialog Framework)有一个简单的实用程序可以绕过   这个过程通过提供快捷方式;

使用此功能,您无需在每个页面中添加其他代码。只需将它添加到您的bean中。