如何在许多机器上刷新dataTable组件?

时间:2012-12-04 19:01:46

标签: jsf java-ee datatable primefaces

我在许多电脑上面临刷新数据表[primefaces模块]的问题。我一直在使用官方网站上的例子:

http://www.primefaces.org/showcase-labs/ui/datatableRowSelectionSingle.jsf

表的

代码开头如下:

<p:dataTable id="table" var="things" value="#{tableBean.beans}" paginator="true" rows="10" selectionMode="single" ....  > 

和按钮:

 <p:commandButton value="Ajax Submit" update="table" id="ajax" actionListener="#{tableBean.savePerson}" ajax="true">

套接字代码:

<p:socket onMessage="handleMessage" channel="/updater" />

“听众”的代码:

PushContext pushContext = PushContextFactory.getDefault().getPushContext();
pushContext.push("/updater", forBeingUpdated);

上面的代码不完整,只是代码段。我想得到的是这样的事情: http://www.primefaces.org/showcase-labs/push/counter.jsf 因此,您可以看到按下计数器按钮使其在许多机器上递增。在我的情况下,我想在表中添加行[并且这件事已经完成]我无法让它在许多机器上动态刷新,如果我在一台[pc]上添加几条记录我必须在另一台机器上刷新去看他们。我尝试过这个网站的技巧:http://blog.primefaces.org/?p=2119但它根本不起作用。欢迎任何想法:)。提前谢谢。

1 个答案:

答案 0 :(得分:1)

Primefaces 4改进了这个PrimePush功能。

如果您只想更新Push Event中的组件,请尝试使用此片段(摘自Primefaces 4用户指南)

  

如果您想要更新组件和/或调用侦听器   在广播时你的支持bean,你可以使用可选的消息 ajax   用于实现相同功能但具有额外功能的行为   请求。

代码片段看起来像这样:

<p:socket channel="/updater">
    <p:ajax event="message" listener="#{tableBean.refreshTable}" update="form:table"  />
</p:socket>



希望这有帮助!