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比较好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值