• <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 閱讀(261) 評論(0)  編輯 收藏 引用 所屬分類: Ruby
            精品国产婷婷久久久| 麻豆精品久久久一区二区| 亚洲日本va午夜中文字幕久久| 久久久久亚洲AV无码专区桃色 | 精品午夜久久福利大片| 久久综合九色综合网站| 99久久亚洲综合精品成人| 精品久久久久国产免费| 欧美国产成人久久精品| 精品熟女少妇av免费久久| 久久99国产精品成人欧美| 成人午夜精品久久久久久久小说| 国产一区二区三精品久久久无广告 | 久久精品九九亚洲精品天堂| 久久精品国产72国产精福利| 欧美一区二区久久精品| 久久久久高潮毛片免费全部播放 | 久久婷婷五月综合97色| 精品多毛少妇人妻AV免费久久| 久久婷婷是五月综合色狠狠| 久久99久久99精品免视看动漫| 精品国产婷婷久久久| 亚洲AV无码久久寂寞少妇| 久久电影网| av国内精品久久久久影院| 精品国产乱码久久久久软件| 97久久精品国产精品青草| 亚洲欧美日韩久久精品| 欧美精品一本久久男人的天堂| 久久久久久久97| 久久久久无码国产精品不卡| 粉嫩小泬无遮挡久久久久久| 久久亚洲精品国产亚洲老地址 | 狠狠综合久久AV一区二区三区| 99国内精品久久久久久久 | 欧美午夜精品久久久久久浪潮| 国产精品禁18久久久夂久| 中文字幕无码久久人妻| 久久精品国产亚洲精品| 国产精品久久亚洲不卡动漫| 影音先锋女人AV鲁色资源网久久|