`
qiezi
  • 浏览: 498719 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Groovy on Rails 0.1发布

阅读更多
简单测试了一下,语法比ruby稍罗嗦一点,不过也算是很简洁了。

在WINDOWS下执行,遇到个小BUG,grails.bat第4行:if "%GRAILS_HOME"=="" goto grailsHomeNotSet是错误的,改成if "%GRAILS_HOME%"=="" goto grailsHomeNotSet就可以了。后面也有点小问题,干脆在LINUX下测试。

照着Quick Start做了一下,还算顺利,不过例子怎么只给了个list呢?怎么也得把create/update/delete给完成嘛。

猜着写了个create:

<!---->        @Property create = {
                [ post : 
new Post() ]
        }

        @Property save 
= {
                
new Post(params).save()
                redirect(action:list)
        }

怎么存进去的不是我那个字符串,而是[Ljava.lang.String;@18b5a73呢。。

又看了下文档,在controller里面是这么用的:

<!---->        @Property save = {
                def post 
= new Post()
                post.properties 
= params
                post.save()
                redirect(action:list)
        }

其它都很相似:

<!---->class PostController {

        @Property index 
= { redirect(action:list) }

        @Property list 
= {
                [ postList : Post.list() ]

        }

        @Property create 
= {
                [ post : 
new Post() ]
        }

        @Property save 
= {
                def post 
= new Post()
                post.properties 
= params
                post.save()
                redirect(action:list)
        }

        @Property show 
= {
                [ post : Post.
get(params['id']) ]
        }

        @Property delete 
= {
                Post.
get(params['id']).delete()
                redirect(action:list)
        }

        @Property edit 
= {
                [ post : Post.
get(params['id']) ]
        }

        @Property update 
= {
                def post 
= Post.get(params['id'])
                post.properties 
= params
                post.save()
                redirect(action:list)
        }
}

语法上比RoR稍麻烦点。

接着测试一下查询:

<!---->        @Property list = {
                def title 
= params['title']
                def body 
= params['body']
                def postList
                def c 
= Post.createCriteria()

                
//if (title != null && title != "" && body != null && body != "")
                if (title && body)
                        postList 
= c{
                                like(
"title""%" + title + "%")
                                like(
"body""%" + body + "%")
                        }
                
else if (title)
                        postList 
= c{
                                like(
"title""%" + + title + "%")
                        }
                
else if (body)
                        postList 
= c{
                                like(
"body""%" + body + "%")
                        }
                
else
                        postList 
= Post.list()

                [ postList : postList, post : 
new Post() ]
        }

list.gsp里面添加:

<!---->           <g:form action="list" method="post">
               
<div class="dialog">
                
<table>
                    
<tr class='prop'>
                        <
td valign='top' style='text-align:left;' width='20%'>
                            <
label for='title'>Title:</label>
                        </
td>
                         <
td valign='top' style='text-align:left;' width='80%'
                            class='${hasErrors(bean:post,field:'title','errors')}'>
                            <
input type='text' name='title' value='${post?.title}' />
                        </
td>
                    </
tr>
                    
<tr class='prop'>
                        <
td valign='top' style='text-align:left;' width='20%'>
                            <
label for='body'>Body:</label>
                        </
td>
                        <
td valign='top' style='text-align:left;' width='80%'
                            class
='${hasErrors(bean:post,field:'body','errors')}'>
                            <
input type='text' name='body' value='${post?.body}' />
                        </
td>
                    </
tr>
              
</table>
               
</div>
               
<div class="buttons">
                     
<span class="formButton">
                        
<input type="submit" value="Search"></input>
                     
</span>
               
</div>
           
</g:form>

groovy写代码挺烦的,局部变量也要def来定义?不定义就提示该变量不是对象的字段,跟很多脚本语言都不一样。如果从java上转过来,会觉得还是挺简洁的。

借助spring、hibernate,Grails所做的就是整合,groovy这个语言好像并没有特别出众的地方,大部分东西在其它脚本语言里面都能看到。我觉得ruby更容易扩充,更自由。Grails要想成功,除非在效率上大幅度领先,就测试来看,并没有觉得很快,它也没提供个评测工具。据说ruby2.0也要重写虚拟机,如果ruby只是稍慢一些,自然还是选RoR比较好。
分享到:
评论

相关推荐

    learn-online-grails:使用 Groovy on Rails (Grails) 构建的 Web 应用程序。 它管理学生和课程的数据库,并将内容呈现为HTML

    使用 Groovy on Rails (Grails) 构建的 Web 应用程序。 它使用Bootstrap为网页赋予样式,从而管理学生和课程的数据库,并以HTML呈现内容。 用户可以看到数据库中所有课程/用户的列表; 还有课程和用户的详细视图。...

    Groovy need not rails——介绍自己写的一个基于groovy的框架,Webx

    "Groovy need not rails"指的是Groovy并不需要像Ruby on Rails那样的全栈框架,因为Groovy自身就提供了强大的工具和库来构建Web应用程序。Webx是一个基于Groovy的框架,它旨在简化Web应用开发,提供类似于Rails的...

    Groovy&Grails - 指南.ppt

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

    Groovy and Grails Recipes.pdf

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

    apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本

    apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望大家多多下载,apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望大家多多下载,apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望...

    请放弃 Jruby和Jython 而选择 Groovy

    Jruby支持Rails框架,使得Java开发者可以利用Ruby on Rails进行快速Web应用开发。 2. **Jython** 是Python语言的Java版本,它提供Python的简洁和强大的功能,并且能够调用Java库。Jython适合那些喜欢Python语法但又...

    Java调用Groovy,实时动态加载数据库groovy脚本

    1. 引入Groovy库:在Java项目中添加Groovy的相关依赖,通常是`groovy-all`,确保Java能够访问Groovy运行时环境。 2. 创建GroovyClassLoader:使用这个类加载器可以动态加载和执行Groovy脚本。它继承自Java的...

    最新 groovy开发包

    它是基于Groovy构建的,提供了一种快速开发Web应用的方式,借鉴了Ruby on Rails的许多理念。通过GORM(Grails Object-Relational Mapping)和Grails Command Line Interface(CLI),开发者可以高效地创建数据库驱动...

    groovy-2.3.6-installer

    Groovy 2.3.6是该语言的一个稳定版本,发布于2014年,它提供了许多改进和新特性。对于开发者来说,选择特定版本可能是因为它满足了项目需求或与已有的系统兼容。Groovy 2.3系列引入了类型推断,使得代码更加可读和...

    Groovy in action

    and provides,, # Tips and Tricks, # Unit Testing and Build Support, # Groovy on Windows, An additional bonus is a chapter dedicated to Grails, the Groovy Web Application Framework.

    groovy-all

    版本号“2.4.7”表明这是Groovy 2.4系列的一个稳定版本,发布于2016年,该版本可能包含了自2.4.0以来的一系列改进和修复。 描述中的省略号可能是由于信息不完整,但在实际的Groovy-all-2.4.7.jar文件中,我们可以...

    groovy学习

    - Grails是基于Groovy的全栈Web应用框架,提供了快速开发功能,类似于Ruby on Rails。 通过学习Groovy,开发者可以利用其灵活性和生产力优势,提升开发效率,尤其是在Spring框架和Gradle构建工具的使用上。这篇...

    groovy入门经典,groovyeclipse 插件

    Groovy是一种动态、灵活的编程语言,它是Java平台上的一个扩展,可以无缝集成到Java项目中。Groovy的语法简洁,支持面向对象编程、函数式编程,并提供了许多现代语言特性,如闭包和动态类型。这使得Groovy成为快速...

    Groovy Script 入门

    ### Groovy Script 入门知识点详解 #### 一、Groovy脚本简介 Groovy是一种灵活的面向对象的编程语言,它运行在Java平台上。由于其语法简洁且与Java高度兼容,因此对于Java开发者来说非常容易上手。Groovy不仅支持...

    Groovy入门教程[参照].pdf

    Groovy 入门教程 Groovy 是一种基于 Java 语言的脚本语言,运行在 JVM 中,语法与 Java 相似,但抛弃了 Java 的一些烦琐的语法规则,提供了更加简洁和灵活的编程体验。 Groovy 的特点 1. 简洁的语法:Groovy 语法...

    发布Groovy文档CHM(截至20110408)

    标题中的“发布Groovy文档CHM(截至20110408)”表明这是一个关于Groovy编程语言的文档合集,截止日期为2011年4月8日。CHM是Microsoft编写的帮助文件格式,通常用于提供离线参考材料。这可能包含了Groovy语言的语法...

    groovy和Java相互调用1

    标题中的“Groovy和Java相互调用1”指的是在编程时如何在Groovy语言环境中调用Java类,以及反之,如何在Java程序中调用Groovy类。这是一种跨语言交互的方式,特别是在混合使用Groovy和Java的项目中非常常见。 ...

    基于groovy实现 java脚本动态编译、部署、发布;可以通过脚本直接调用dubbo接口.zip

    本文将深入探讨如何基于Groovy实现Java脚本的动态编译、部署和发布,并且介绍如何通过Groovy脚本直接调用Dubbo接口,从而提高开发效率和灵活性。 Groovy是一种基于Java平台的强大的动态编程语言,它具有简洁的语法...

    groovy-sdk-4.0.3

    Groovy SDK 4.0.3 是一个针对Groovy编程语言的软件开发工具包,它包含了Groovy语言的运行环境和开发所需的各种组件。Groovy是一种动态、灵活的面向对象编程语言,它与Java语法兼容,但提供了更简洁的语法和更强的...

Global site tag (gtag.js) - Google Analytics