我正在寻找一种优雅的 JSF 方式来执行此操作,并且想知道是否有任何普遍接受的做法来执行此操作。
当我从一个页面导航到另一个页面时,我希望新页面在从最后一页传输的h:message组件(实际上是p:message但它应该是同一件事)中 显示一个 FacesMessage 。
例如,如果用户单击“创建文档”按钮,它会在成功时导航到新页面,并在新页面上显示成功消息。我希望我所有的数据库更改操作都以这种方式运行。
FacesContext似乎清除了导航上的所有消息,所以我最接近的解决方案如下所示:
- 将 FacesMessage 对象存储在会话 bean 中。
- 在消息 bean 中创建一个方法checkMessage ,该方法调用FacesContext.getCurrentInstance().addMessage(..)并从消息 bean 中删除消息。
- 在目标页面中放置一个对checkMessage的 EL 引用。
- 在目标页面中 放置一个p:message 。
这似乎有点强迫 - 有没有更好的方法来做到这一点?