在不同的窗口/选项卡中更新组件,而无需手动刷新它

时间:2015-05-14 11:06:54

标签: forms jsf-2 primefaces commandbutton

我有不同的页面,不同的布局,例如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 datatable已更新,而不需要手动刷新。可能吗 ?有一些方法可以实现这一目标吗?我发现使用相同的模板有一种方法可以做到这一点。

1 个答案:

答案 0 :(得分:0)

请参阅以下选项中的PrimeFaces User Guide

  • p:poll组件(定期服务器轮询)。
  • PrimeFaces Push(在Atmosphere框架之上的更多功能解决方案)。