Grails:编写一个taglib,它使用模板来呈现数据并使其与控制器无关

Rit*_*yak 7 grails templates views taglib

我编写了一个taglib,它执行一些逻辑并将一些数据编译成HTML.当我在视图中使用taglib时,taglib期望在视图的相对子文件夹中找到模板.有没有一种方法可以让taglib从公共文件夹中获取模板,例如视图中的布局/文件夹.这就是taglib代码的外观:

class IconifiedTextTagLib { 

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

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

Igo*_*nov 9

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

out << render(template:"/taglibTemplates/iconText", model:modelMap)
Run Code Online (Sandbox Code Playgroud)

或者进入`views/A /',和

out << render(template:"/A/iconText", model:modelMap)
Run Code Online (Sandbox Code Playgroud)

  • 事实证明领先/失踪.感谢您指出了这一点. (2认同)