我如何(或应该?)从Grails中的SiteMesh模板(views / layouts / main.gsp)访问服务层?

时间:2011-01-15 11:17:26

标签: grails

我需要在我正在构建的网站的页脚中创建一个顶级列表。页脚是在默认的SiteMesh布局模板(views/layouts/main.gsp)中创建的。

为了创建toplist,需要访问数据库,因此我已经封装了在服务类(services/FooService)中创建toplist所需的所有逻辑。

请注意,虽然通常从控制器层访问服务,但在这种情况下,默认布局模板(views/layouts/main.gsp)从控制器生成而不是

  • 布局视图(views/layouts/main.gsp)可以访问服务类吗?怎么样?
  • 这是正确的设计决定吗?如果没有,什么是更好的封装,我如何从布局视图(views/layouts/main.gsp)与所述封装进行交互?

2 个答案:

答案 0 :(得分:8)

我建议创建一个标记库(documented here)来包装页脚的渲染。只需声明一个具有相同名称的字段,即可将服务注入标记库类。

然后从服务中获取您需要的内容,并直接或更好地输出html,然后使用_footer.gsp创建render template: 'footer', model: [yourmodel: model]render it

答案 1 :(得分:0)

您应该从控制器而不是视图访问您的服务。