0

我在许多 pc 上刷新数据表 [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但它根本没有用。欢迎任何想法:)。提前致谢。

4

1 回答 1

1

Primefaces 4 改进了这个 PrimePush 功能。

如果您只想从 Push Event 更新组件,请尝试使用此代码段(取自 Primefaces 4 User Guide)

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

代码片段看起来像这样:

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



希望这可以帮助!

于 2013-11-29T12:35:42.043 回答