我(或者应该)如何从Grails中的SiteMesh模板(views/layouts/main.gsp)访问服务层?
我需要在我正在构建的网站的页脚中创建一个toplist。页脚是在默认的SiteMesh布局模板(我(或者应该)如何从Grails中的SiteMesh模板(views/layouts/main.gsp)访问服务层?,grails,Grails,我需要在我正在构建的网站的页脚中创建一个toplist。页脚是在默认的SiteMesh布局模板(views/layouts/main.gsp)中创建的 为了创建toplist,需要访问数据库,因此我将创建toplist所需的所有逻辑封装在一个服务类(services/FooService)中 请注意,虽然通常从控制器层访问服务,但在这种情况下,默认布局模板(views/layouts/main.gsp)不是从控制器生成的 布局视图(views/layouts/main.gsp)能否访问服务类?
views/layouts/main.gsp
)中创建的
为了创建toplist,需要访问数据库,因此我将创建toplist所需的所有逻辑封装在一个服务类(services/FooService
)中
请注意,虽然通常从控制器层访问服务,但在这种情况下,默认布局模板(views/layouts/main.gsp
)不是从控制器生成的
- 布局视图(
)能否访问服务类?怎么做views/layouts/main.gsp
- 这是正确的设计决策吗?如果不是,什么是更好的封装,以及如何从布局视图(
)与所述封装交互views/layouts/main.gsp
然后从服务中获取所需内容,直接输出html,或者更好地创建一个
\u footer.gsp
,并使用呈现模板:'footer',model:[yourmodel:model]
谢谢您的回答,但这并不能解决我的问题,因为默认模板(views/layouts/main.gsp)不是从控制器渲染的。是否可以从SiteMesh布局模板(在本例中为views/layouts/main.gsp)使用标记库?确定-标记设计为从模板内使用。它们是您的操作版本(例如)
并缓存tagLib调用的输出