只要在taglib目录下建立一个Groovy类,在Groovy类里面用闭包就可以定义标签了。比如你要建立一个和HTML有关的自定义标签,那么你可以建立一个HTMLTag.groovy类,然后在里面编写自定义标签。一个闭包就代表一个标签,闭包接收一个Map做为参数,标签属性就放在里面。写完就可以直接调用,不用像JSP那样还要写TLD文件,并且在web.xml文件中引用标签。而且Grails本身也提供了丰富的标签,一般不用写自定义标签。
当Grails在显示模板中遇到一个标签的时候,它会去查找grails-app/taglib/这个地方.Grails会找到每个标签的闭包并执行它们.
eg:
class RaceTrackTagLib {
def formatDate = {
attrs ->
def date = attrs.get('date')
if (!date){
date = new Date()
}
def format =
attrs.get('format')
if (!format) {
format = "yyyy-MM-dd HH:mm:ss
z"
}
out << new
java.text.SimpleDateFormat(format).format(date)
}
}
上面使用了Java的SimpleDateFormat
类来格式化一个date,然后把它写入响应。随后,这个标签能像下列这样在GSP中使用:
<g:formatDate
format="dd-MM-yyyy"
date="${new Date()}"
/>
GSP标签和其他标签技术一个主要不同在于,来自
controllers(控制器)
,
标签库
或者GSP 视图中的GPS标签可以被当作任意的正规标签或者当作方法被调用.
来自GSPs中的标签当作方法调用
当作为方法被调用时,标签的返回值被当作String实体直接被写入响应中。 因此,示例中的createLinkTo
能等同的看做方法调用:
Static Resource: ${createLinkTo(dir:"images"
, file:"logo.jpg"
)}
当你必须在一个属性内使用一个标签时是特别有用的:
<img src="${createLinkTo(dir:'images', file:'logo.jpg')}"
/>
I在视图技术中,标签内嵌套标签的特性是不被支持的,这样变得十分混乱,往往使得像Dreamweaver这样WYSWIG的工具产生不利的效果以至于在渲染标签时:
<img src="<g:createLinkTo dir="
images" file="
logo.jpg" />
"
/>
来自控制器(Controllers)和标签库的标签作为方法调用
你同样可以调用来自控制器和标签库的标签。标签可以不需要内部默认的g:
namespace
前缀来调用,并返回String结果:
def imageLocation = createLinkTo(dir:"images"
, file:"logo.jpg"
)
然而,你同样可以用命名空间前缀来避免命名冲突:
def imageLocation = g.createLinkTo(dir:"images"
, file:"logo.jpg"
)
假如你有一个自定义命名空间
,,你可以使用它的前缀来替换(例如,使用
FCK Editor
plugin
:
def editor = fck.editor()
默认情况下,标签被添加到默认的Grails命名空间,并在GSP页面中和
g:
前缀一起使用。然而,你可以指定一个不同的命名空间,通过在你的
TagLib
类中添加一个静态属性:
class SimpleTagLib {
static
namespace = "my"
def example = { attrs ->
…
}
}
这里,我们指定了一个命名空间
my
,因此,稍后在GPS页面中标签库中的标签引用会像这样:
<my:example name="..."
/>
前缀和静态的命名空间
属性值一样.命名空间对于插件特别有用.
命名空间内的标签可以作为方法调用,使用命名空间作为前缀来执行方法调用:
out << my.example(name:"foo"
)
可用于GSP,控制器或者标签库.
分享到:
相关推荐
NULL 博文链接:https://search.iteye.com/blog/383347
Grails标签 主要介绍了grails的标签的一个帮助文档
本文内容包括:ShortenUrl插件简介创建TinyUrl类测试TinyUrl类创建IsGd类创建ShortenUrl服务打包并部署插件结束语下载参考资料在这个“精通Grails”系列中,ScottDavis将向您展示如何创建您自己的Grails插件。...
9.2.1 在远程方法调用前后执行代码 9.2.2 事件处理 9.2.3 完善页面的更新 9.3 创建远程调用链接 9.4 实现ajax效果(effects) 9.5 如何处理javascript事件 9.6 以异步方式提交表单...
Grails Grails Grails Grails Grails
Groovy和Grails配置方法 教你从0入手,一步一步深入安装和测试,包含环境和语言的下载地址
6.2.2.6 标签作为方法调用 6.2.3 视图和模板 6.2.4 使用Sitemesh布局 6.3 标签库 6.3.1 简单标签 6.3.2 逻辑标签 6.3.3 迭代标签 6.3.4 标签命名空间 6.4 URL映射 6.4.1 映射到控制器和操作 6.4.2 嵌入式变量 6.4.3 ...
Grails权威指南Grails权威指南Grails权威指南Grails权威指南Grails权威指南Grails权威指南
grails-sb-admin2-模板 Grails插件可通过简单的方式在Grails应用程序中配置SB-Admin2模板( )。
嗯,工作使用 以前有过groovy的开发,时间隔得久了些有些生疏 ...标签,自定义标签 。。。。完善中,课程内容看:课件PDF 因为学习时间段,经验欠缺。若有错误请大家谅解 我想针对初学者入门是很有帮助的
eclipse插件grails(groovy)配置方法
Grails1.1中文文档
grails-2.1.zip.001
grails+Xfire webservice
Grails入门指南中文pdf -- 针对grails1.0.4更新,附加idea8 开发grails的流程
grails演示项目,配置了一对多,多对对模型配置,配置了Mysql,Sqlserver数据库
Grails项目的应用越来越多,而对于初学者来说,在Eclipse下搭建Grails项目是一个难题,这个文档将教会你如何搭建Grails项目,希望对你有所帮助。
用grails开发过程中,项目优化配置,系统间调用等的总结。
Grails 中文 参考手册