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

标签 grails

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

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

请注意,虽然服务通常是从 Controller 层访问的,但在这种情况下,默认布局模板(views/layouts/main.gsp)不是从一个 Controller 。

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

最佳答案

我建议创建一个标签库( documented here )来包装页脚的渲染。您只需声明一个同名字段即可将您的服务注入(inject)到标签库类中。

然后从服务中获取您需要的内容,直接输出 html,或者更好地创建 _footer.gsprender it使用渲染模板:'footer',模型:[yourmodel: model]

关于grails - 我如何(或者应该?)从 Grails 中的 SiteMesh 模板 (views/layouts/main.gsp) 访问服务层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4699259/

相关文章:

mongodb - 带有Grails,GORM和MongoDB的UUID的问题

database - Grails 数据库迁移插件 - Java 堆空间

testing - Grails - 测试 GORM 关系

grails - 如何从groovy中的字符串中提取带有数字的给定字符串数组

grails - 将 namespace 放在url中

Grails3 spring security core 3不能使用域对象

Grails 在 GSP View 中获取 session 和管理

以数据库错误开头的 Grails 有没有人看到这个

hibernate - 使用MongoDB和Hibernate的Grails

grails - macOS High Sierra 10.13.3上Grails中的FixtureException