• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            qiezi的學習園地

            AS/C/C++/D/Java/JS/Python/Ruby

              C++博客 :: 首頁 :: 新隨筆 ::  ::  :: 管理 ::
            簡單測試了一下,語法比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比較好。
            posted on 2006-04-07 16:59 qiezi 閱讀(271) 評論(0)  編輯 收藏 引用 所屬分類: Ruby
            久久亚洲国产成人影院网站| 国产高清美女一级a毛片久久w| 91精品国产91热久久久久福利| 久久久久久九九99精品| 伊人久久大香线蕉av不变影院| 久久久久亚洲AV成人网人人网站| 思思久久好好热精品国产| 亚洲欧美久久久久9999| 伊人久久大香线蕉精品不卡| 久久久久国产视频电影| 久久精品这里只有精99品| 色综合久久久久综合99| 久久精品国产日本波多野结衣| 7777久久久国产精品消防器材| 色婷婷综合久久久久中文一区二区| 亚洲精品无码久久久久去q | 久久一日本道色综合久久| 无码人妻久久一区二区三区免费丨 | 51久久夜色精品国产| 久久电影网| 久久久国产亚洲精品| 久久综合给久久狠狠97色| 国产精品免费久久久久电影网| 久久中文精品无码中文字幕| 精品久久久一二三区| 91精品国产91久久综合| 久久久噜噜噜久久| 欧美一区二区三区久久综| 国产成人久久精品麻豆一区 | 久久丫忘忧草产品| 日韩一区二区久久久久久| 大香伊人久久精品一区二区| 国产91久久精品一区二区| 中文字幕精品无码久久久久久3D日动漫 | 日产精品久久久一区二区| 91麻豆精品国产91久久久久久| 久久久久久免费视频| 国产成人精品久久综合 | 日本久久久久久久久久| 日韩欧美亚洲综合久久影院d3| 国内精品久久久久影院薰衣草|