2011-04-29 25 views
-1

我正在开发一个应该是大型应用程序的可视化前端的grails插件。从应用程序到插件的通信将由消息驱动,就目前而言,正确的方法是使用grails服务接收消息。如何在视图中连接grails服务和javascript代码

考虑到会有几个不同的消息类型,他们将影响视图的不同部分(其中大部分是围绕JavaScript库建成,如jQuery,jQueryUI的,海军报等),我不知道究竟怎么了实现决策(哪个消息应该更新视图的哪个部分),以及如何将服务中发生的东西连接到视图中的javascript代码。

一言以蔽之:

在哪里执行决策的信息,以及如何与智能视图中的javascript代码连接Grails的服务。

P.S.我已经找不到类似的问题了,请原谅我,如果问题是“简单”的,我试图同时吸收大量新技术,而且我没有太多时间来正确地做。

+0

有几个问题:何时以及如何重绘视图。它是否会被AJAX驱动?你打算进行一些民意调查/推式沟通? – julkiewicz 2011-04-29 10:31:54

+0

感觉对我来说太泛泛。高度依赖于消息的强度和功能。你能举几个具体的例子吗? – 2011-04-29 10:37:22

+0

@julkiewicz基于区间的刷新也是可以接受的。每当出现新消息时,理想的解决方案就是刷新,但是,每隔几秒自动刷新一次也不错。 – Adis 2011-04-30 11:31:16

回答

1

服务无法呈现视图。而他们不应该。这是控制器的工作。见MVC。消息驱动系统通常不会传递消息以进行视图呈现。发送消息以便后端可以更新等。因此,这里有一些选项...

重新思考你的消息驱动方法。如果您继续沿着这条道路前进,则需要实施某种推送(comet)技术,以便服务可以通过此推送技术通知客户某些内容已更改并需要更新。

你可以用ajax方法去执行轮询(仔细地)或仍然使用push(comet)技术。

走向前沿,看看WebSockets

+0

不幸的是,消息驱动的方法既不是我的选择,也不是我的改变力量。我必须与我的工作,所以我正在寻找如何处理我目前的情况的想法。我会研究推技术。 此外,我不想从服务渲染视图,而是从服务发送一些信息到视图,并以某种方式更新包含flot库信息的JavaScript数组,并决定哪个图应该是根据发送的消息进行更新。 – Adis 2011-04-30 11:27:15

+0

从服务渲染视图并将信息发送到视图是一回事。它不能(也不应该)从服务中完成。据我所知,使用推技术或ajax轮询将是您唯一的选择。但是,如果别人有更好的想法,我很高兴听到它。 – Gregg 2011-04-30 17:07:44

+0

我不会说“呈现视图并将信息发送到视图是一回事”。如果发送的消息是“模型部分N更新”,并且控制器在渲染视图中的职责仍然存在 - 使用MVC可以。除此之外,我会第二个答案。 – 2011-05-01 06:16:19