• <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
            久久久久亚洲AV成人片| 午夜精品久久久久久中宇| 亚洲国产成人久久综合碰碰动漫3d| 久久人人爽人人爽人人AV东京热| 99久久综合狠狠综合久久止| 精品久久久久中文字| 中文字幕久久久久人妻| 久久亚洲欧美日本精品| 一本久久a久久精品vr综合| 99久久久久| 亚洲国产精品成人久久| 久久久久久噜噜精品免费直播| 亚洲va久久久噜噜噜久久| 国产精品美女久久久网AV| 久久亚洲精品成人AV| 亚洲欧美日韩精品久久亚洲区| 97久久精品无码一区二区| 无码任你躁久久久久久老妇App| 久久婷婷久久一区二区三区| 久久人人爽人人爽人人片AV麻烦| 久久本道久久综合伊人| 国内精品久久久久| 精品无码久久久久久尤物| 伊人久久国产免费观看视频| 免费观看久久精彩视频| 国内精品久久久久伊人av| 亚洲αv久久久噜噜噜噜噜| 亚洲国产精品综合久久一线| 99久久综合国产精品二区| 久久精品国产99国产精偷| 久久久久久久亚洲Av无码| 日韩人妻无码一区二区三区久久| 久久综合九色综合网站| 国产精品久久新婚兰兰| 久久青青草视频| 精产国品久久一二三产区区别| 中文成人无码精品久久久不卡| 一本久久a久久精品综合香蕉| 久久久人妻精品无码一区| 久久人人爽人人澡人人高潮AV| 久久99精品久久久久久野外|