只要在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,控制器或者标签库.
分享到:
相关推荐
8.7.2 自定义标签基础内容 8.7.3 演示自定义标签 8.7.4 测试自定义标签 8.8 本章小结 第9章 ajax 9.1 ajax基础知识 9.2 ajax实战 9.2.1 在远程方法调用前后执行代码 9.2.2...
GSP支持标签库,可以创建自定义的可重用组件。 七、URL Mapping Grails的URL映射非常灵活,可以在`UrlMappings.groovy` 文件中定义,使URL更加语义化,便于SEO优化。 八、构建与部署 Grails使用Gradle作为构建...
- **Tags and Tag Libraries**:自定义标签库可以提高视图的可重用性和可维护性。 4. **ORM映射**: - **Domain Classes**:Grails中的领域类定义了数据库表结构,通过GORM自动创建表和字段。 - **Relationships...
GSP(Groovy Server Pages)支持自定义标签库,使得视图层逻辑更加清晰,同时提供了内置的标签,如`g:form`、`g:each`等,简化HTML的编写。 总结,Grails框架以其高效开发、丰富的插件、强大的ORM和简洁的语法,...
每个插件都有自己的生命周期方法,可以在特定的生命周期阶段执行自定义操作。 四、依赖注入(Dependency Injection) Grails采用Spring框架的依赖注入,使得对象之间的关系在运行时动态决定,增强了代码的可测试性...
GSP标签库是另一大特色,可以方便地创建自定义标签,提高代码复用。 5. **GORM与数据持久化**:GORM是Grails对ORM的实现,它自动处理数据库连接和对象映射。通过领域类,开发者可以以面向对象的方式操作数据库,如...
【标签】:“源码”与“工具”这两个标签暗示了这篇学习记录可能涵盖了Grails框架的源代码解析以及开发者工具的使用技巧。对于“源码”,可能涉及到对Grails内部机制的理解,如控制器、服务、领域模型等的实现;而...
- **自定义脚手架模块**:提供了创建自定义用户界面生成器的方法。 **6.2 Groovy动态查找器查询和按例查询** - **动态查找器**:Groovy动态查找器提供了一种简洁的方式来查询数据库,简化了SQL语句的编写。 - **...
《Grails中文使用手册》是为开发者提供的一份详尽指南,旨在帮助用户快速掌握Grails框架的使用方法。Grails是一种基于Groovy语言的开源Web应用框架,它结合了模型-视图-控制器(MVC)架构模式,旨在提高开发效率,...
4. **api**:API文档是开发者的重要工具,提供了Grails框架及其组件的接口定义,包括核心库、服务、控制器、标签库等,通过查阅API,开发者可以知道如何调用框架提供的各种功能。 5. **img**:这个目录下的图像文件...
1. **紧密集成Java平台**:Grails充分利用Java平台的优势,如广泛的库支持和工具链,同时保持调用底层Java框架的灵活性。 2. **规约优于配置**:Grails遵循这一原则,通过文件名和目录结构来推断应用程序的结构,...
14.2.2 开发自定义标签 179 14.3 Grails对Ajax的支持 182 14.4 本章小结 184 第15章 实现Web Service 185 15.1 REST风格的Web Service 185 15.1.1 什么是REST 185 15.1.2 在Grails中实现REST 185 15.1.3 在Client端...
- **Tag Libraries**:自定义标签库允许开发者创建可重用的UI组件,提高开发效率。 - **Ajax Support**:Grails对Ajax的内置支持使得页面更新无需刷新,提升用户体验。 - **Scaffolding**:自动生成的临时界面...
本篇将深入探讨如何将Groovy on Grails(Grails)作为后台开发框架,与AngularJS这个强大的前端MVC框架相结合,构建出高效、响应式的Web应用程序。 Grails是基于Groovy语言的全栈式Java web框架,它以其简洁的语法...
在Grails中,Groovy作为主要的编程语言,用于编写控制器、服务、领域模型等。 **二、Grails 架构组件** 1. **模型(Model)**: Grails 领域模型由Domain Classes组成,它们代表了应用中的业务实体。这些类自动与...
在视图层,可以使用插件提供的标签库来展示图片,而在控制器中,可以调用插件的API来处理图片操作。 **五、开发与扩展** image-manager插件基于Grails的插件体系,这意味着它本身是可扩展的。开发者可以根据需求...
【标签】:“JavaScript” 提示我们,虽然课程主要关注Groovy和Grails,但可能也涉及了JavaScript的相关内容,因为这两种语言在Web开发中经常一起使用。JavaScript是前端开发的主要语言,与Groovy和Grails在后端交互...
3. **JSP标签库**:JSP提供了自定义标签库(Tag Libraries),例如JSTL(JavaServer Pages Standard Tag Library)和Struts Tags,使得开发者可以使用简洁的标签来替代复杂的Java代码,提高可读性和可维护性。...
由于Groovy代码可以无缝调用Java类库,开发者可以在已有的Java项目中轻松引入Groovy脚本,提高生产力。此外,Groovy代码可以被编译为与Java字节码兼容的类,这意味着Groovy程序可以在任何支持Java的环境中运行。 在...