【问题标题】:Grails send data from service to viewGrails 将数据从服务发送到视图
【发布时间】:2014-08-04 14:59:56
【问题描述】:

在 Grails 中,Service 可以直接向视图发送数据吗?还是必须通过控制器?如果可以的话,如果有人知道,我恳请指出一个教程或示例。谢谢。

【问题讨论】:

  • 在我看来,与视图的交互真的应该留给控制器。服务更适用于与视图无关且由控制器访问的可重用代码。也许您可以使您的问题更具体地针对您的用例,以查看其他可能有效的方法?根据您想要实现的目标,此线程也可能会有所帮助(?)stackoverflow.com/q/1777640/3651800

标签: grails


【解决方案1】:

我不确定您要做什么,但简短的回答是“不,服务不能直接将数据发送到视图。”至少,通常情况下。

要了解我为什么说“通常”,您需要了解如何处理典型的 HTTP 请求周期。让我们从那里开始。

Client(浏览器)向Controller 发出请求。 controller 可以与servicesdomain classes 交互以构建model(数据),然后将其提供给view 并呈现为response 以响应浏览器发出的请求。

Browser -> Controller -> Services & Domains -> Controller Model -> View -> Response

这是典型的路线。

但是,使用长轮询技术或 websocket 之类的东西确实会稍微改变这一点。这些确实使您能够将消息放到流式传输到客户端的总线上,并且这些消息可以由服务生成。这本身就是一个相当大而复杂的话题。

现在,在您掌握或完全理解典型的 HTTP 会话之前,不可能深入研究更复杂的会话。从简单开始,掌握它,然后转向复杂。

【讨论】:

  • 感谢您的详细描述。我非常感激。我正在尝试在我的 Grails 应用程序中上传文件。我使用 g:uploadForm 很快就搞定了那部分。当我想将进度条连接到流程时,麻烦就开始了。所以,我用 jQuery UI 进度条尝试了它,这就是我一整天都在努力完成的事情。我今天发表了三个不同的帖子(我认为),因为我在此过程中遇到了问题,如果您想访问它们只是为了查看我的代码示例和思考过程,或者可能缺少 :) cnt type lngr cmmnt。 bt bscly 不知道如何播种 progbar。
  • 我没用过,但是你看过吗:grails.org/plugin/super-file-upload
【解决方案2】:

服务不能真正将数据发送到视图。请求通常由控制器处理,控制器可以执行诸如返回模型或呈现视图并指定模型之类的操作。模型数据可以从服务中检索,但控制器仍负责将数据传递给视图。如果您了解请求周期,就会清楚为什么服务无法将数据发送到视图。

希望对你有帮助。

【讨论】:

  • 我认为这只是问题所在,我不了解请求周期。我整天都在尝试使用 Grails g:formUpload 来处理我的 jQuery UI 进度条,因为我的服务实际上是在处理文件上传,所以我完全不知道从哪里获取数据来提供我的 jQuery用户界面进度条。如果您能指出任何来源,我将不胜感激。我从早上 7:00 就一直在这。现在是晚上 9 点 20 分。我从来没有这么努力过一天没有任何进展。惊人的。支付我作为新手的会费......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-11
  • 2018-05-17
  • 1970-01-01
  • 2017-04-10
  • 1970-01-01
  • 1970-01-01
  • 2012-07-19
相关资源
最近更新 更多