像 Java Server Pages JSP) 一样,GSP支持定制tag库的概念.不同于JSP,Grails标签库机制是简单的,优雅的,在运行时完全可重载的.
创建一个标签库是相当简单的,创建一个以规约TagLib结尾的一个Groovy类,并把它放置于
grails-app/taglib目录里:class SimpleTagLib {
}
现在,为了创建一个标签,简单的创建属性并赋值一个带有两个参数的代码块:标签属性和主体内容:class SimpleTagLib {
def simple = { attrs, body ->
}
}
attrs属性是一个简单的标签属性map,同时body是另一可调用的代码块,它返回主体内容:class SimpleTagLib {
def emoticon = { attrs, body ->
out << body() << attrs.happy == 'true' ? " :-)" : " :-("
}
}
正如以上所显示的,这里有个隐式的out变量,它引用了输出Writer,可以用来附加内容到响应中.
然后,你可以在你的GSP内简单的引用这个标签而不需要任何导入:<g:emoticon happy="true">Hi John</g:emoticon>