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

kno*_*orv 2 grails

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

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

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

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

Mar*_*Dow 8

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

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