在不同 window/tab 中更新组件而无需手动刷新它

Update component in a different window/tab without manually refreshing it

我有不同布局的不同页面,例如 index.xhtml 和 user.xhtml,每个页面都有自己的模板。如果我在 user.xhtml 中进行更改,我想更新 index.xhtml 中的数据表。

index.xhtml:

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
  xmlns:h="http://xmlns.jcp.org/jsf/html"
  xmlns:f="http://xmlns.jcp.org/jsf/core"
  xmlns:p="http://primefaces.org/ui">
<ui:composition template="/template.xhtml">
    <ui:define name="body">
 <h:form id="indexFormId">
         <p:dataTable id="datalist" value="#{userController.items}"var="item" widgetVar="userWidget">
 -----datatable columns and rows with user data------
 </p:datatable>
 </h:form>

user.xhtml:

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
  xmlns:h="http://xmlns.jcp.org/jsf/html"
  xmlns:f="http://xmlns.jcp.org/jsf/core"
  xmlns:p="http://primefaces.org/ui">

<ui:composition template="/templateB.xhtml">

    <ui:define name="body">
 <h:form>
 <p:commandButton value="Modify User" actionListner="some action" update=":thisForm, :indexFormId"/>
 </h:form>

因此,当我关闭 user.xhtml 时,我看到 index.xhtml 数据表已更新,无需手动刷新。可能吗 ?有什么办法可以做到这一点?我看到有一种方法可以使用 .

使用相同的模板来做到这一点

请参阅以下选项的 PrimeFaces User Guide

  • p:poll 组件(定期服务器轮询)。
  • PrimeFaces Push(一种基于 Atmosphere 框架的更通用的解决方案)。