7

我编写了一个 taglib,它执行一些逻辑并将一些数据呈现到 HTML 中。当我在视图中使用 taglib 时,taglib 希望在视图的相对子文件夹中找到模板。有没有一种方法可以让 taglib 从一个常见的文件夹中提取模板,比如视图中的 layouts/ 文件夹。这是 taglib 代码的外观:

class IconifiedTextTagLib { 

def renderIconText = { attrs, body ->   
                 //some processing logic to generate the modelMap
         out << render(template:"taglibTemplates/iconText", model:modelMap)
    }
}

当我<g:renderIconText />在一个名为 A 的控制器中使用标签时,它希望taglibTemplates/iconText出现在views/A/文件夹中。这是一个问题,因为我需要能够从多个控制器中使用它。我需要一种将模板放在 layouts/ 之类的文件夹中的方法,以便可以在所有视图中使用它。关于我如何做到这一点的任何想法?

4

2 回答 2

9

将模板放入views/taglibTemplates/并尝试:

out << render(template:"/taglibTemplates/iconText", model:modelMap)

或进入“views/A/”,以及

out << render(template:"/A/iconText", model:modelMap)
于 2012-05-15T07:10:59.107 回答
1

在 grails 2.3.8 上我不得不这样使用

确保模板文件名以下划线开头

_mytemplate.gsp

在您的标签库类中

out << g.render(template: '/taglibTemplates/mytemplate')
于 2015-10-29T17:47:49.797 回答