- 浏览: 558202 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
binglex:
谢谢,出现这个异常,看来这个贴才发现site-packages ...
cx_Oracle的"Unable to acquire Oracle environment handle"异常 -
lizhongkan:
这样过度比较方便。但如果原来的项目,有几十个依赖的jar包,是 ...
maven2的pom的依赖管理 -
landmine:
博文看不清呀楼主,怎么解决的?我也遇到了
applet在IE下运行极慢而且CPU占用很高 -
strivefuture:
这种方法对FF浏览器,有效吗?
Iframe Shim解决applet挡住ExtJS工具栏菜单问题 -
zw:
老大也有粗心的时候啊!
一个属性未设置导致发mail不成功的郁闷。
在比较漫长的期待之后(期间经历了Grails被SpringSource收购和Groovy1.6助速的利好消息),Grails 1.1终于跟我们广大的Grailers见面了,正如Grails的Roadmap所描述,此次的发布新增不少的人性化的特性,闲话少说,让我们一起来对Grails 1.1的新特性,先睹为快,以下只是主要内容的摘录和简译,详细请参考原文:http://www.grails.org/1.1+Release+Notes。
GORM--期待已久了:)
独立的GORM
GORM现在不再依赖Grails 1.1了,只需要带有命名空间的Spring配置来设置必要的Hibernate SessionFactory就好了:
上述示例将扫描"org.grails.samples"包,只要每个GORM实体被grails.persistence.Entity注释(annotation)就可以了:
更多信息参考在GRAILS_HOME/samples/petclinic-mvcSpring MVC petclinic示例。
更好的GORM事件支持
在以前的版本中,GORM已经支持beforeInsert, beforeUpdate和beforeDelete事件了,现在相对应的afterInsert, afterUpdate and afterDelete也完全支持了。
持久化原生类型集合(Persistence of Collections of Basic Types)
现在,GORM通过关联表(join table)的方式支持原生类型集合的持久化,象String, Integer等集合:
持久化枚举类型集合
GORM提供对枚举类型集合的持久化:
只读的对象实例
通过read方法,领域对象实例可以以只读的方式加载:
缺省的排序
关联关系(Associations)可以在类级别中声明一个缺省的排序:
或者在关联级别(association level):
批量读取(Batch Fetching)
GORM支持在类级别中使用ORM DSL来配置批量读取(优化的延迟加载):
或者在关联级别(association level):
更好的动态查找器(Dynamic Finders)
现有的动态查找器中新增了InList后缀:
动态查找器还可以使用查询缓存:
并且还支持悲观锁(pessimistic lock):
支持遗留系统的单向一对多映射
单向的One-to-many关联可以通过joinTable参数来更改映射到基础数据库的方式:
枚举类型现在可以通过特定的getId()方法来确定要持久化的状态信息。这是除了枚举名称或者顺序值(Enum name or the ordinal value)之外的另外一种持久化的机制。
插件(Plugins)--确实比以前便利了很多
全局插件
可以插件插件为所有应用所全局共享:
多个插件仓库
现在,Grails支持配置多个插件存储仓库的能力,你只需要在USER_HOME/.grails/settings.groovy或者grails-app/conf/BuildConfig.groovy文件中包含要配置的仓库信息就可以了:
Grails发现插件的命令(plugin discovery commands)比如list-plugin和install-plugin将会自动的根据所配置的仓库去工作,要发布一个插件到特定的仓库,你可以用repository参数来指定特定的仓库:
自动的解决插件依赖传递(Automatic Transitive Plugin Resolution)
插件将不再需要检测SVN,在应用第一次加载的时候,会根据插件的元数据自动的被安装。
此外插件的依赖也将会通过类似传递来解决
插件的范围和环境(Plugin Scopes and Environments)
Plugins可以通过指定环境(environment)或者预定义的构建来标识范围:
插件就会只加载那些environments中定义的,并将不会被打包到WAR文件中,这样开发类插件("development-only" plugins)就不会被打包到产品中.使用而不再产品中.
插件资源的排除(Plugin Excludes)
你可以在插件中描述那些要排除的某些资源:
这将在最后打包插件的时候,排除那些test/demo的资源很有用.
使用插件进行模块化应用开发(Modular Application Development with Plugins)
一个应用可以从任何地方进行加载,甚至都没有安装都可以,要达到如此,你只需要在你的BuildConfig.groovy 文件中指定位置即可:
这样做在以下两处地方有好处:
1. 你正在开发一个插件,但是想在真正的应用中测试,却又不想先打包再安装.
2. 你将一个应用拆分成一系列插件和一个应用,而且这些都在同样的"super-project" 目录中
测试
测试框架
新的测试框架已经被集成到Grails 1.1了
测试框架增加了模仿所有通用类型比如controllers, domain class, tag libraries and url mappings,这样就可以更少更快的运行单元测试.
数据绑定(Data Binding)--更灵活了
绑定属性的一个子集
更简单的绑定属性子集,以前的语法是:
这将请求参数中所有数据绑定到person中。如果你不期望这样的行为,你可以使用bindData,而现在你要帮定属性的子集,只需要使用下标操作符(subscript operator)就可以了:
要访问领域类属性的子集也是同样的语法:
集合类型的帮定
Grails支持象lists, sets和maps集合类型的绑定.
Grails会根据指定的索引自动的初始化领域对象实例并且赋予相应的关联对象的值
脚手架(Scaffolding)
模板和动态脚手架
通过install-templates命令,可以安装模板,动态脚手架现在使用此模板来运行
支持更多的关联类型
脚手架支持多对多和单向的一对多关联关系
控制器(Controllers)--新特性还不错
更好的RESTful映射
你可以使用如下的REST URLs:
上述示例中URI "/books"将会自动的映射到BookController. 而HTTP的GET, PUT, POST 和DELETE 将会相应地被"show", "save", "update" and "delete"所处理.
处理重复的提交
通过同步令牌模式("Synchronizer Token Pattern"),Grails内建了对重复提交的处理。不过首先你要在form中声明一个令牌:
然后通过withForm方法你可以检测出是重复的还是无效的请求:
转发请求(Forwarding Requests)
作为重定向的一个替代,你可以通过forward方法来转发你的一个请求:
声明式的错误处理
你可以在你的UrlMappings文件中声明一个特定类型的异常处理:
视图(Groovy Server Pages)--兼容性更好
在GSP中支持JSP的标签
GSP支持重用JSP的能力:
在GSP中也支持方法式的JSP标签调用 :
模板的命名空间(Template Namespace)
对于模板的使用来说,增加了一个特定的命名空间,因此一个如下所示的_tableRow.gsp模板:
可以通过使用tmpl命名来调用:
服务器端的包含
新增了一个<g:include>标签在当前的视图中来引入另外一个controller, action 或者 view的响应:
此标签也可以在 controller 或者 另外的tag library中使用:
工程基础架构(Project Infrastructure)--更多更好的构建集成
maven集成
Grails 1.1 comes with an associated Maven plugin and archetype that allows you to build your Grails project easily using Maven. Follow the instructions here and either use the archetype to create a new Grails project, or run:
to create a Maven POM for an existing project.
Ant + Ivy 集成
Grails now creates an Ant build.xml and corresponding ivy.xml file for each project allowing you to build a Grails project on any build server that supports Ant (like CruiseControl and Hudson) without needing Grails installed on the target server.
在BeanBuilder中支持Spring的命名空间
Grails' Spring DSL has been extended to include access to the Spring namespace APIs allowing you to easily use Spring advanced AOP support (among other things):
Environment and Metadata API
There is a new API to access the current Environment:
There is also a new class for easily accessing application meta-data:
Log4j DSL
A new Log4j DSL is available that replaces the old way of configuring Log4j:
Full documentation for the Log4j DSL is available in the user guide.
Flexible Build Configuration
A new grails-app/conf/BuildConfig.groovy file is available that allows you to configure different aspects of the Grails build including output paths and servers used for resolution of plugins:
Non-interactive mode
Grails now supports a --non-interactive flag at the command line that can be passed in order to disable any user prompts:
This is useful for continuous integration servers.
Encrypted Data Sources
DataSource passwords can now be encrypted using a supplied codec class:
The supplied codec uses Grails' existing codec mechanism
升级注意事项--有必要专门写个blog总结一下
Grails 1.1 是发生很多重要的变化,但是大部分还是向后兼容的。以下是已知的一些会影响升级的东东:
不抱怨,不折腾。经历越多,收获越多。
GORM--期待已久了:)
独立的GORM
GORM现在不再依赖Grails 1.1了,只需要带有命名空间的Spring配置来设置必要的Hibernate SessionFactory就好了:
<gorm:sessionFactory base-package="org.grails.samples" data-source-ref="dataSource" message-source-ref="messageSource"> <property name="hibernateProperties"> <util:map> <entry key="hibernate.hbm2ddl.auto" value="update"/> </util:map> </property> </gorm:sessionFactory>
上述示例将扫描"org.grails.samples"包,只要每个GORM实体被grails.persistence.Entity注释(annotation)就可以了:
@Entity class Book { String title }
更多信息参考在GRAILS_HOME/samples/petclinic-mvcSpring MVC petclinic示例。
更好的GORM事件支持
在以前的版本中,GORM已经支持beforeInsert, beforeUpdate和beforeDelete事件了,现在相对应的afterInsert, afterUpdate and afterDelete也完全支持了。
持久化原生类型集合(Persistence of Collections of Basic Types)
现在,GORM通过关联表(join table)的方式支持原生类型集合的持久化,象String, Integer等集合:
class Person { static hasMany = [nicknames:String] }
持久化枚举类型集合
GORM提供对枚举类型集合的持久化:
enum VehicleStatus { OFF, IDLING, ACCELERATING, DECELARATING } class Truck { static hasMany = [statuses:VehicleStatus] }
只读的对象实例
通过read方法,领域对象实例可以以只读的方式加载:
def book = Book.read(1)
缺省的排序
关联关系(Associations)可以在类级别中声明一个缺省的排序:
class Book { String title static mapping = { sort "title" } }
或者在关联级别(association level):
class Author { static hasMany = [books:Book] static mapping = { books sort:"title" } }
批量读取(Batch Fetching)
GORM支持在类级别中使用ORM DSL来配置批量读取(优化的延迟加载):
class Book { String title static mapping = { batchSize 15 } }
或者在关联级别(association level):
class Author { static hasMany = [books:Book] static mapping = { books batchSize:15 } }
更好的动态查找器(Dynamic Finders)
现有的动态查找器中新增了InList后缀:
def groovyBooks = Book.findByAuthorInList(['Dierk Koenig', 'Graeme Rocher'])
动态查找器还可以使用查询缓存:
def books = Book.findByTitle("Groovy in Action", [cache:true] )
并且还支持悲观锁(pessimistic lock):
def books = Book.findByTitle("Groovy in Action", [lock:true] )
支持遗留系统的单向一对多映射
单向的One-to-many关联可以通过joinTable参数来更改映射到基础数据库的方式:
class Book { String title static belongsTo = Author static hasMany = [authors:Author] static mapping = { authors joinTable:[name:"mm_author_books", key:'mm_book_id' ] } } class Author { String name static hasMany = [books:Book] static mapping = { books joinTable:[name:"mm_author_books", key:'mm_author_id'] } }更好的枚举类型支持
枚举类型现在可以通过特定的getId()方法来确定要持久化的状态信息。这是除了枚举名称或者顺序值(Enum name or the ordinal value)之外的另外一种持久化的机制。
enum Country { AUSTRIA('at'), UNITED_STATES('us'), GERMANY('de'); final String id Country(String id) { this.id = id } }
插件(Plugins)--确实比以前便利了很多
全局插件
可以插件插件为所有应用所全局共享:
grails install-plugin webtest -global
多个插件仓库
现在,Grails支持配置多个插件存储仓库的能力,你只需要在USER_HOME/.grails/settings.groovy或者grails-app/conf/BuildConfig.groovy文件中包含要配置的仓库信息就可以了:
grails.plugin.repos.discovery.myRepository="http://svn.codehaus.org/grails/trunk/grails-test-plugin-repo" grails.plugin.repos.distribution.myRepository="https://svn.codehaus.org/grails/trunk/grails-test-plugin-repo"
Grails发现插件的命令(plugin discovery commands)比如list-plugin和install-plugin将会自动的根据所配置的仓库去工作,要发布一个插件到特定的仓库,你可以用repository参数来指定特定的仓库:
grails release-plugin -repository=myRepository
自动的解决插件依赖传递(Automatic Transitive Plugin Resolution)
插件将不再需要检测SVN,在应用第一次加载的时候,会根据插件的元数据自动的被安装。
此外插件的依赖也将会通过类似传递来解决
插件的范围和环境(Plugin Scopes and Environments)
Plugins可以通过指定环境(environment)或者预定义的构建来标识范围:
def environments = ['dev', 'test'] def scopes = [excludes:'war']
插件就会只加载那些environments中定义的,并将不会被打包到WAR文件中,这样开发类插件("development-only" plugins)就不会被打包到产品中.使用而不再产品中.
插件资源的排除(Plugin Excludes)
你可以在插件中描述那些要排除的某些资源:
def pluginExcludes = [ 'grails-app/controller/DemoController.groovy', 'grails-app/domain/DemoDomain.groovy' ]
这将在最后打包插件的时候,排除那些test/demo的资源很有用.
使用插件进行模块化应用开发(Modular Application Development with Plugins)
一个应用可以从任何地方进行加载,甚至都没有安装都可以,要达到如此,你只需要在你的BuildConfig.groovy 文件中指定位置即可:
// Useful to test plugins you are developing. grails.plugin.location.jsecurity = "/home/dilbert/dev/plugins/grails-jsecurity" // Useful for modular applications where all plugins and // applications are in the same directory. grails.plugin.location.'grails-ui' = "../grails-grails-ui"
这样做在以下两处地方有好处:
1. 你正在开发一个插件,但是想在真正的应用中测试,却又不想先打包再安装.
2. 你将一个应用拆分成一系列插件和一个应用,而且这些都在同样的"super-project" 目录中
测试
测试框架
新的测试框架已经被集成到Grails 1.1了
测试框架增加了模仿所有通用类型比如controllers, domain class, tag libraries and url mappings,这样就可以更少更快的运行单元测试.
class SongTests extends grails.test.GrailsUnitTestCase { void testMinimumDuration() { mockDomain(Song) def song = new Song(duration: 0) assertFalse 'validation should have failed', song.validate() assertEquals "min", song.errors.duration } }
数据绑定(Data Binding)--更灵活了
绑定属性的一个子集
更简单的绑定属性子集,以前的语法是:
person.properties = params
这将请求参数中所有数据绑定到person中。如果你不期望这样的行为,你可以使用bindData,而现在你要帮定属性的子集,只需要使用下标操作符(subscript operator)就可以了:
person.properties["firstName","lastName"] = params
要访问领域类属性的子集也是同样的语法:
person.properties["firstName","lastName"].each { println it }
集合类型的帮定
Grails支持象lists, sets和maps集合类型的绑定.
<g:textField name="books[0].title" value="the Stand" /> <g:textField name="books[1].title" value="the Shining" /> <g:textField name="books[2].title" value="Red Madder" />
Grails会根据指定的索引自动的初始化领域对象实例并且赋予相应的关联对象的值
脚手架(Scaffolding)
模板和动态脚手架
通过install-templates命令,可以安装模板,动态脚手架现在使用此模板来运行
支持更多的关联类型
脚手架支持多对多和单向的一对多关联关系
控制器(Controllers)--新特性还不错
更好的RESTful映射
你可以使用如下的REST URLs:
"/books"(resource:"book")
上述示例中URI "/books"将会自动的映射到BookController. 而HTTP的GET, PUT, POST 和DELETE 将会相应地被"show", "save", "update" and "delete"所处理.
处理重复的提交
通过同步令牌模式("Synchronizer Token Pattern"),Grails内建了对重复提交的处理。不过首先你要在form中声明一个令牌:
<g:form useToken="true">
然后通过withForm方法你可以检测出是重复的还是无效的请求:
withForm { // good request }.invalidToken { // bad request }
转发请求(Forwarding Requests)
作为重定向的一个替代,你可以通过forward方法来转发你的一个请求:
forward controller:"home", action:"index"
声明式的错误处理
你可以在你的UrlMappings文件中声明一个特定类型的异常处理:
"500"(controller:"errors", exception:IllegalArgumentException)
视图(Groovy Server Pages)--兼容性更好
在GSP中支持JSP的标签
GSP支持重用JSP的能力:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <fmt:formatNumber value="${10}" pattern=".00"/>
在GSP中也支持方法式的JSP标签调用 :
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> ${fmt.formatNumber(value:10, pattern:".00")}
模板的命名空间(Template Namespace)
对于模板的使用来说,增加了一个特定的命名空间,因此一个如下所示的_tableRow.gsp模板:
<tr> <td class="prop">${label}</td> <td class="value">${value}</td> </tr>
可以通过使用tmpl命名来调用:
<tmpl:tableRow label="one" value="two" />
服务器端的包含
新增了一个<g:include>标签在当前的视图中来引入另外一个controller, action 或者 view的响应:
<g:include controller="book" action="list"></g:include>
此标签也可以在 controller 或者 另外的tag library中使用:
def content = include(controller:"book", action:"list")
工程基础架构(Project Infrastructure)--更多更好的构建集成
maven集成
Grails 1.1 comes with an associated Maven plugin and archetype that allows you to build your Grails project easily using Maven. Follow the instructions here and either use the archetype to create a new Grails project, or run:
mvn grails:create-pom
to create a Maven POM for an existing project.
Ant + Ivy 集成
Grails now creates an Ant build.xml and corresponding ivy.xml file for each project allowing you to build a Grails project on any build server that supports Ant (like CruiseControl and Hudson) without needing Grails installed on the target server.
在BeanBuilder中支持Spring的命名空间
Grails' Spring DSL has been extended to include access to the Spring namespace APIs allowing you to easily use Spring advanced AOP support (among other things):
beans = { xmlns aop:"http://www.springframework.org/schema/aop" fred(Person) { name = "Fred" age = 45 } birthdayCardSenderAspect(BirthdayCardSender) aop { config("proxy-target-class":true) { aspect( id:"sendBirthdayCard",ref:"birthdayCardSenderAspect" ) { after method:"onBirthday", pointcut: "execution(void ..Person.birthday()) and this(person)" } } } }
Environment and Metadata API
There is a new API to access the current Environment:
import grails.util.Environment ... switch(Environment.current) { case Environment.DEVELOPMENT: configureForDevelopment() break case Environment.PRODUCTION: configureForProduction() break }
There is also a new class for easily accessing application meta-data:
def metadata = grails.util.Metadata.current println metadata.applicationName println metadata.applicationVersion
Log4j DSL
A new Log4j DSL is available that replaces the old way of configuring Log4j:
log4j = { appenders { rollingFile name: 'fileLog', fileName: 'logs/full.log', maxFileSize: 26214400, maxBackupIndex: 10, layout: pattern(conversionPattern: '%d{yyyy-MM-dd HH:mm:ss,SSS} %p %c{2} %m%n') } root { error() additivity = true } error 'org.codehaus.groovy.grails.web.servlet', // controllers 'org.codehaus.groovy.grails.web.pages' // GSP debug fileLog:'grails.app' warn 'org.mortbay.log' }
Full documentation for the Log4j DSL is available in the user guide.
Flexible Build Configuration
A new grails-app/conf/BuildConfig.groovy file is available that allows you to configure different aspects of the Grails build including output paths and servers used for resolution of plugins:
grails.work.dir="/tmp/work" grails.plugins.dir="/usr/local/grails/plugins" grails.project.test.reports.dir="/usr/local/grails/test-reports"
Non-interactive mode
Grails now supports a --non-interactive flag at the command line that can be passed in order to disable any user prompts:
grails run-app --non-interactive
This is useful for continuous integration servers.
Encrypted Data Sources
DataSource passwords can now be encrypted using a supplied codec class:
dataSource { username = "foo" password = "438uodf9s872398783r" passwordEncryptionCodec="my.company.encryption.BlowfishCodec" }
The supplied codec uses Grails' existing codec mechanism
升级注意事项--有必要专门写个blog总结一下
Grails 1.1 是发生很多重要的变化,但是大部分还是向后兼容的。以下是已知的一些会影响升级的东东:
- 现在插件默认是存储在你的USER_HOME目录,因此你需要重新安装你的那些插件,或者你通过以下的方式来运行:
grails -Dgrails.project.plugins.dir =./plugins run-app或者在BuildConfig.groovy中定义grails.project.plugins.dir =./plugins
- 枚举类型现在缺省将String类型的名称映射到数据库,而不是以前的ordinals
- jsession id被放弃掉了,详细查看GRAILS-3364
- GSP的空格处理比以前更胜,现在你可以比以前写更多的空格,详细参考GRAILS-3277
- grails.testing.reports.destDir配置参数已经被grails.project.test.reports.dir替代
- PreInit.groovy现在已经变成BuildConfig.groovy
- 控制器的allowedMethods属性现在需要被定义为static.
评论
4 楼
热带翎羽
2010-10-09
博主没说重点...
3 楼
agile_boy
2010-10-09
热带翎羽 写道
发现你这里很多都是项目上很需要的技巧,很好奇你是如何学习到的呢?
不抱怨,不折腾。经历越多,收获越多。
2 楼
热带翎羽
2010-10-01
发现你这里很多都是项目上很需要的技巧,很好奇你是如何学习到的呢?
1 楼
Arden
2009-04-21
查询缓存好象很多问题,我用hibernate的查询缓存,会把数据库搞死。~
发表评论
-
Grails跟Hibernate和Mongodb的组合
2011-08-08 23:19 3460标题看起来很噱头哦 先简要说明一下我在项目中的必要场 ... -
一个属性未设置导致发mail不成功的郁闷。
2011-04-10 20:42 2749难得阳光灿烂的周末啊,确被javamail的一个属性未设置 ... -
Grails 关于单元/集成测试
2011-02-17 11:06 2088Grails提供了比较方便的测试,其默认提供了单元,集成测 ... -
[转载]Grails plugins on Hudson
2010-07-03 11:48 1957此文也是因为被“墙”才转载的,原文地址:http: ... -
Grails 1.3的依赖管理
2010-07-03 11:42 3614用Grails做项目以来,基本上一直都是各自独立的项目,也 ... -
[转载] Reading i18n messages from the database with Grails
2010-06-27 23:45 1551如题,此文是Grails的作者的一篇文章,无奈被墙,同时 ... -
[转载] Adventures in Grails – WS-Security Part 2
2010-06-13 23:10 1317原文url:http://axixmiqui.wordp ... -
[转载]Adventures in Grails – WS-Security Part 1
2010-06-06 22:18 1491转载是因为此文网站被墙了。 The next s ... -
grails 1.2 生成相关IDE和ANT的配置文件
2010-01-24 14:48 1292做了一个Grails的小应用测试一下,发现相比1.1.1, ... -
grails,xfire和groovyws共存
2009-09-04 10:25 2272使用Grails开发WebService服务,方便快捷就无须再 ... -
Grails 从1.0.4 到 1.1的升级小结
2009-03-13 13:17 2254先将官方的升级注意事项简单罗列,我也是参照此进行升级的。 ... -
Grails1.0.4的scaffolding
2008-11-17 16:06 1374使用Grails的动态脚手架(dynamic scaffold ... -
grails JobExecutionException编译错误
2008-07-08 11:46 1657使用Grails插件的要注意了,jsecurity中自带了 ... -
Grails 1.0.3发布
2008-06-07 16:45 1948现在想想Grails1.0.2发布也有些许时间了,其间Gr ... -
Grails中文参考手册一审完毕,初步发行一个beta版
2008-05-06 18:10 4384详细信息请参考Grails参考手册的官方信息: http: ... -
Groovy 1.6-beta-1发布,性能有大幅提高!
2008-05-03 14:57 2417感谢G2One和Groovy开发团队为我们发布了Groovy ... -
Grails喜获JAX大奖
2008-04-27 11:36 1662前几天Grails获得提名,现在终于水到渠成了,获得JAX大奖 ... -
Groovy1.5.6发布
2008-04-26 09:55 1746Groovy1.5.5在编译速度有所提升以后,G2ONE很 ... -
Groovy1.5.5发布
2008-04-15 09:38 1650G2One, Inc和Groovy开发小组非常荣幸的宣布:Gr ... -
通过属性字符格式来访问GPath格式的Xml
2008-04-11 11:52 1654GPath方式的Xml访问,为我们的Xml处理提供了极大的 ...
相关推荐
通过阅读《Grails1.1中文文档.chm》和解压后的《Grails.rar》文件,你可以获得详细的框架指南、API文档和示例代码,从而加速学习进程。对于初学者来说,这份文档将是你理解Grails 1.1及其开发流程的重要参考资料。
Grails1.1中文文档
这份“Grails1.1中文文档”是专为初学者准备的指导材料,帮助他们更好地理解和掌握Grails框架。 1. **Groovy语言基础**:Grails 使用 Groovy 作为主要编程语言,Groovy 是一种简洁、面向对象的JVM语言,具有动态...
### Grails 1.1 Web Application Development #### 核心知识点概述 《Grails 1.1 Web Application Development》是一本专注于使用Grails框架进行高效Web应用开发的技术书籍。本书由作者Jon Dickinson撰写,旨在...
Grails1.1最新 中文 文档 当今的Java Web开发技术显得过于复杂,相对于它本身的需要来说。现在主流的Java Web框架也是异常复杂,而且没有很好的遵循 Don't Repeat Yourself (DRY) 法则。 因此我们要以一种新的思维...
《Grails 1.1 中文文档》是一个针对Grails框架1.1版本的详尽指南,旨在帮助中文用户理解并掌握这一强大的Groovy构建的Web应用开发平台。Grails是一个基于Groovy语言的开源框架,它采用了模型-视图-控制器(MVC)架构...
Grails 最新的 v1.1版的中文文档,chm格式,Grails是一套快速开发Web应用的开源框架,基于Groovy编程语言,并构建于Spring、Hibernate和其它标准Java框架之上,能为大家带来超高效率的一站式框架。
本文将深入探讨Grails 1.1版本中的动态编码方案,这是该框架提供的一种强大且灵活的特性,使得开发者能够在运行时动态地创建和修改代码。 动态编码方法在Grails中主要体现在两个方面:GSP(Groovy Server Pages)和...
Grails1.1中文文档-----2009.3.25
grails framework 1.1 中文
在实际开发中,解压"grails-1.2.2.zip"后,你会得到一个完整的Grails 1.2.2发行版,包括运行环境、源码、文档等。你可以根据需求创建项目,利用框架提供的命令行工具快速生成基础结构,然后通过编写Groovy代码实现...
《Grails1.1中文文档》是Grails 1.1版本的官方中文指南,包含了框架的详细介绍、安装指南、基本概念、MVC模式的应用、GORM的使用、服务层、控制器、视图、国际化、测试等方面的内容。通过阅读这份文档,开发者可以...
标题"grails-bin-1.1"指的是Grails框架的1.1版本的二进制发行版。这个版本的Grails是一个免安装版,意味着用户可以直接将它解压到任何位置,而不需要通过传统的安装程序进行安装。 描述中的"本文件只需要放到相应...
### Grails 快速参考指南 1.1:领域模型与数据验证 #### 领域类(Domain Class) 在Grails框架中,领域模型是应用程序的核心组件之一,用于表示数据库中的实体。Grails通过使用GORM(Groovy on Rails ORM)提供了...
Apress.Beginning.Groovy.and.Grails.From.Novice.to.Professional.Jun.2008 grails_programming Grails1.1中文文档-----2009.3.25 Grails入门指南(第二版) Groovy经典入门 Programming Groovy 2 合集,超实惠哦