`
friendsys
  • 浏览: 348065 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

Groovy on Grails 笔记

阅读更多
内容节选---
Apress.Beginning.Groovy.and.Grails.From.Novice.to.Professional.Jun.2008



默认情况下,Groovy下的==就是equals方法,如果要进行对象比较,就需要使用is()方法

不过如果实现了Comparable接口,那么compareTo()方法会优先调用于equals方法

a**b 表示a的b次方

基础的断言
assert 1==2 : "One isn't Two";   //:后的信息会附加在异常中出现

org.codehaus.groovy.runtime.GStringImpl 要求"",且${}
'' 单引号无论是一行还是多行都会过滤掉${}

\ slashy

Method和Closure的区别在于 后者是对象,前者不是

默认情况下 Groovy下的集合为HashSet,也可以显式的声明为其他的格式
def emptySet = [] as Set
Set和List的区别在于不提供直接的下标索引提供查询,可以转as换成List后查询

Map 默认情况下是LinkedHashMap
def emptyMap = [:]
访问的方法比较多 ,eachWithIndex方法比较特别点
todos.eachWithIndex { it, i -> println "${i} Key: ${it.key}

正则
[a-z&&[^bc]]  排除法

三种形式
The match operator (==~)   匹配  返回true or false
The find operator (=~)     查找  返回一个java.util.regex.Matcher
The pattern operator (~string) 定义  使用//也是可以

查找的例子
def matcher = winpath =~ /(\w{1}):\\(\w+)\\(\w+)\\(\w+)/ 
访问结果的时候,注意需要2维数组来进行获取子项
def matcher = winpath =~ /(\w{1}):\\(\w+)\\(\w+)\\(\w+)/
println matcher[0][1] // C

使用~string 可以很方便的声明一个正则表达式

可以通过在Operator运算符 对应的Method 来实现运算符的重载

技巧: 分别调用集合里面对象的指定方法
list.collect { println it.printFullName() }
list*.printFullName()

Elvis运算符 类似Java的三元运算符,不过更方便
def firstName = user.firstName == null ? "unknown" : user.firstName // Java ternary
def firstName2 = user.firstName ?: "unknown" // Groovy Elvis

两个是等效的....  如果user.firstName为null,那就赋值"unknown"

user?.firstName 其中的?是用来防止该对象是null的

@符号的使用
def todo = new Todo(name: "Jim")
println todo.name
println todo.@name
其中第一个使用get去访问属性,而第二个会绕过get方法

&符号,将方法变成能和CloSure一样传递
c=[1,3,4]
c.each(this.&sa)
def String sa(is)
{
  println is;
}
同时这种调用也可以使用在Java的类之上

Writing XML with Groovy MarkupBuilder


def writer = new StringWriter()
def builder = new groovy.xml.MarkupBuilder(writer)
builder.setDoubleQuotes(true)
builder.todos {
    todo (id:"1") {
        name "Buy Beginning Groovy and Grails"
        note "Purchase book from Amazon.com for all co-workers."
    }
}
println writer.toString()

JavaScript  不能自闭合,而且要调用在函数定义之下

使用XmlSlurper解析XML
Reading XML with XmlSlurper

def todos = new XmlSlurper().parse('todos.xml')
assert 3 == todos.todo.size()
assert "Buy Beginning Groovy and Grails" == todos.todo[0].name.text()
assert "1" == todos.todo[0].@id.text()

.gtpl 模板文件,用于生成指定格式的内容
import groovy.text.SimpleTemplateEngine

读取模板文件
Class.metaClass.getResourceAsText = { resource ->
  this.class.getResourceAsStream(resource).getText()
}
def emailTemplate = this.class.getResourceAsText('nightlyReportsEmail.gtpl')


http://www.chinagroovy.org/forum/index.php?topic=72.0 非常详细的用Eclipse开发Grails项目的例子

注意目前看到的还是需要用控制台建立Grails工程,然后进行导入
>grails create-app collab-todo   其中最后一个为工程名字

建立最后需要确定在工程属性的Groovy Project Properties 两个进行打钩

需要时后动设置GRAILS_HOME 在Eclipse里面,和外面设置的无关

> grails run-app 运行程序

编译工程后注意如果在Eclipse开启的情况下修改了环境变量.需要重启下Eclipse

创建一个domain文件
> grails create-domain-class todo
这种类型的文件 类似与JavaBean文件,功能会更多一些 CURT的模型

在Eclipse里面运行Grails编译的时候,注意需要选中项目,再开始运行, grails 在Eclipse里面不需要

domain文件中的 static constraints 用来约束保存前的属性大小限制
static constraints = {
        description(maxSize:1000)
}

会同时建立一个Groovy的test文件
该类继承GrailsUnitTestCase,它是继承与Junit,并且封装了部分方便的方法,其中的测试方法,需要用test开头
还是Junit3.x的东西

执行测试的命令
>grails test-app  //注意该命令会执行所有的测试,集成和单元,并形成报告

>grails test-app Foo //测试指定的类 其中测试不需要加Tests后缀

grails test-app -unit   //也可以选择执行单元测试,或者
grails test-app -integration
-return //不知道是啥意思

创建单元测试
>grails create-unit-test book

创建集成测试
>grails create-integration-test book

可以在test的文件夹下得到详细的测试报告

domain 类中的id和version是不需要显示的去指定的,或声明

GRAILS 下的版本控制,部分文件并不会被上传到SVN上,不过并没有看到介绍怎么直接与SVN整合

构建controller,用于直接和页面交互,也是唯一能够访问Domain的层次
>grails create-controller todo

会自动建立一个TodoController.groovy的类,以及建立一个单元测试类

而且类名会自动格式化,大小写标准

默认建立工程中,数据库会随每次启动自动删除,然后重建

建立ORM映射关系

belongsTo tells GORM to delete the to-do if either the associated user or the category is
deleted
意思是 这个标签表明,这里随主键表对应属性的删除而删除

建立一对多关联,这里会建立一个数组
static hasMany = [todos: Todo]

这个会建立两个数组
static hasMany = [todos: Todo, categories: Category]

工程下的grails-app文件夹里面的view里面提供了页面的布局

先创建简单的模板,便于共享使用
_footer.gsp 使用下划线_开头,并且专门放置在common文件夹内

<g:render template="/common/footer" /> 加入到需要放置的页面中,这里直接放入main.gsp中

其中main.gsp则是其他网页的总体模板

再建立个通用的顶部标签

1:<g:if> and <g:else> tags work together to create “if-then-else” logic.
2:<g:link> tag creates a hypertext link
3:<g:each> 迭代 an iteration tag
在例子中用于显示controller列表

该标签用于放置自定义的内容...其他部分由main.gsp提供
<g:layoutBody />

Grails Tags

Logical Tags   //逻辑语句组件

<g:if>
<g:else>
<g:elseif>

Iteration Tags  //用于循环的组件

<g:while>
<g:each>
<g:collect>
<g:findAll>
<g:grep>

Assignment Tags  //声明对象的组件

<def> (deprecated)
<set>

Linking Tags  //超链接组件

<g:link>
<g:createLink>
<g:createLinkTo>

Ajax Tags  //Ajax的组件

<g:remoteField>
<g:remoteFunction>
<g:remoteLink>
<g:formRemote>
<g:javascript>
<g:submitToRemote>

Form Tags  //表单元素的组件

<g:actionSubmit>
<g:actionSubmitImage
<g:checkBox>
<g:currencySelect>
<g:datePicker>
<g:form>
<g:hiddenField>
<g:localeSelect>
<g:radio>
<g:radioGroup>
<g:select>
<g:textField>
<g:textArea>
<g:timeZoneSelect>


UI Tags   //额外的组件
<g:richTextEditor>   //使用Fckeditor创建的 用插件形式加载

Render and Layout Tags //布局属性

<g:applyLayout>
<g:encodeAs>
<g:formatDate>
<g:formatNumber>
<g:layoutHead>
<g:layoutBody>
<g:layoutTitle>
<g:meta>
<g:render>
<g:renderErrors>
<g:pageProperty>
<g:paginate>
<g:sortableColumn>


Validation Tags //显示验证与验证结果

<g:eachError>
<g:hasErrors>
<g:message>
<g:fieldValue>

















分享到:
评论

相关推荐

    Groovy和Grails配置方法

    ### Groovy和Grails配置方法 #### 一、Groovy与Grails简介 Groovy是一种强大的面向对象编程语言,它运行在Java平台上,并且能够直接与Java代码进行交互。Groovy支持函数式编程特性,拥有丰富的语法糖以及简洁的...

    [Groovy] Groovy, Grails, Griffon 入门教程 (英文版)

    [Apress] Groovy, Grails, Griffon 入门教程 (英文版) [Apress] Beginning Groovy, Grails and Griffon (E-Book) ☆ 出版信息:☆ [作者信息] Vishal Layka, Christopher M. Judd, Joseph Faisal Nusairat, Jim ...

    groovy-grails-tool-suite-3.6.4.RELEASE-e4.4.2-win32-x86_64.part1

    groovy-grails-tool-suite-3.6.4.RELEASE-e4.4.2-win32-x86_64.part1 共两个压缩包,解压后将扩展名.zip.bak改为.zip再次解压。

    Groovy&Grails准备,收集的Groovy与Grails的书籍

    Groovy和Grails是两个密切相关的开源技术,主要用于构建现代、高效的Java平台应用程序。Groovy是一种动态、灵活的编程语言,它与Java高度兼容,但语法更为简洁,提供了更多的灵活性。而Grails则是一个基于Groovy的...

    begining groovy and grails

    《初学者指南:Groovy与Grails》一书由Christopher M. Judd、Joseph Faisal Nusairat和James Shingler共同编写,是专为Java开发者设计的实用教程,旨在帮助他们掌握敏捷Web开发所需的Groovy和Grails技能。本书从入门...

    Beginning Groovy and Grails, From Novice to Professional

    ### 关于《从新手到专家:Groovy与Grails入门》 #### 一、书籍概述 本书《Beginning Groovy and Grails, From Novice to Professional》由Christopher M. Judd、Joseph Faisal Nusairat 和 James Shingler共同编写...

    Groovy and Grails Recipes.pdf

    - **领域模型**:代表数据库表的实体类,使用GORM(Groovy on Rails ORM)进行管理。 - **控制器**:处理HTTP请求并将数据传递给视图层。 - **视图**:使用GSP(Groovy Server Pages)或FreeMarker等模板引擎来...

    eclipse插件grails(groovy)

    Eclipse 插件 Grails(Groovy)是一个强大的开发工具,它使得在Eclipse环境中进行Groovy和Grails应用的开发变得更为便捷。Groovy是一种动态、面向对象的编程语言,而Grails则是一个基于Groovy的开源Web应用框架,...

    Groovy&Grails - 指南.ppt

    Groovy 和 Grails 与 Ruby on Rails 一样,都追求开发效率和简洁性,但它们建立在不同的语言基础之上。Ruby on Rails 是基于 Ruby 语言,而 Grails 则是基于 Groovy。虽然 Grails 受到 Rails 的启发,但它采用了 ...

    Agile Development with Groovy and Grails.pdf

    ### 敏捷开发与Groovy及Grails技术详解 #### 一、敏捷开发与Groovy及Grails概览 在《Agile Development with Groovy and Grails》这本著作中,作者Christopher M. Judd(Judd Solutions, LLC 的总裁兼顾问)详细...

    groovy-grails-tool-suite-3.6.4.RELEASE-e4.4.2-win32-x86_64.part2

    groovy-grails-tool-suite-3.6.4.RELEASE-e4.4.2-win32-x86_64.part2 共两个包,解压后需要将扩展名.zip.bak改名为.zip重新解压。 http://dist.springsource.com/release/STS/3.8.1.RELEASE/dist/ e4.6/spring-tool-...

    Groovy / Grails F2

    Groovy / Grails F2 The Best Web Server

    Groovy / Grails F4

    Groovy / Grails F4 The Best Web Server

    Groovy / Grails F3

    Groovy / Grails F3 The Best Web Server

    groovy and grails ppt

    Groovy和Grails是两个密切相关的Java平台上的开发工具,它们在构建现代Web应用程序中扮演着重要角色。Groovy是一种敏捷、动态的语言,它旨在减少Java的样板代码,同时提供了可选的动态类型、闭包、领域特定语言...

    grails_nodejsApp:带有 nodejs 和 groovy on grails 的 Gumball Machine 应用程序

    《构建集成Node.js与Groovy on Grails的Gumball Machine应用》 在IT领域,跨平台、高效能的应用开发是开发者不断追求的目标。在这个背景下,“grails_nodejsApp”项目是一个独特的尝试,它结合了Groovy on Grails和...

    Groovy and Grails Recipes(清晰PDF)

    ### Groovy and Grails Recipes 知识点概览 #### 一、Groovy by Example **1. Getting Started with Groovy** - **介绍**: 本章主要介绍了如何开始使用Groovy编程语言。对于初次接触Groovy的新手来说,这是一个很...

    [Groovy] Groovy & Grails 新手进阶教程 (英文版)

    [Apress] Groovy & Grails 新手进阶教程 (英文版) [Apress] Beginning Groovy and Grails From Novice to Professional (E-Book) ☆ 出版信息:☆ [作者信息] Christopher M. Judd, Joseph Faisal Nusairat, ...

    Groovy/Grails F1

    Groovy Grails , The best web server.

Global site tag (gtag.js) - Google Analytics