定期刷新 Tapestry 区域
定期刷新 Tapestry 区域以从服务器提取数据集更改的最佳方法是什么?
What is the best way to refresh a Tapestry zone on a regular basis to pull changes of a dataset from a server?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
首先,您需要公开事件处理程序的 url:
然后,在 tml 中的 javascript 块中将 url 分配给变量:
然后您需要获取 ZoneManager javascript 对象的句柄:
您所在的区域并不重要获取ZoneManager,这一切都是为了促进ajax回调。 如果事件侦听器返回 MultiZoneUpdate 或不同区域的更新,它将被正确处理。
我使用虚拟区域进行编组,并且始终返回 MultiZoneUpdate,即使我只更新一个区域。 由于我经常需要更新多个区域,因此我发现更容易保持我的方法的一致性。 无论如何,这对于您的问题来说有点偏离主题。
如果您有事件处理程序的其他参数,您可以将它们附加到以“/”分隔的网址,即“http://www.host.com/” app/page/event/param1/param2"
现在您已经有了
url
和ZoneManager
,您可以初始化请求-响应循环:正如 henning 建议的那样,将其与原型中的 PeriodicalExecuter 将实现您想要的:
Firstly, you'll need to expose the url for your event handler:
Then, in a javascript block in your tml assign the url to a variable:
Then you need to get a handle to a ZoneManager javascript object:
It's not important which zone you get the ZoneManager for, all this does is facilitate the ajax callback. If the event listener returns a MultiZoneUpdate or an update for a different zone, it will be handled correctly.
I use a dummy zone for marshalling and always return a MultiZoneUpdate even if I'm only updating one zone. Since more often than not I need to update multiple zones, I find it easier to be consistent in my approach. anyway, that is a little off topic for your question.
if you have additional parameters for the event handler, you can append them to the url separated by '/' ie "http://www.host.com/app/page/event/param1/param2"
now that you have the
url
and aZoneManager
, you can initialise the request-response loop:as henning suggested, combining this with the PeriodicalExecuter in prototype will achieve what you want:
您可以使用 Prototype 的 PeriodicalExecuter,并调用 Tapestry 的 ZoneManager 来更新区域:
You could use Prototype's PeriodicalExecuter, and have that call Tapestry's ZoneManager to update the zone: