• <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 閱讀(266) 評論(0)  編輯 收藏 引用 所屬分類: Ruby
            国内精品免费久久影院| 久久WWW免费人成一看片| 狼狼综合久久久久综合网| 久久久久人妻一区二区三区vr| 性欧美大战久久久久久久久| 久久99精品久久久久久hb无码| 久久久久国产一级毛片高清版| 国产成人无码精品久久久久免费 | 超级碰久久免费公开视频| 办公室久久精品| 亚洲国产另类久久久精品黑人| 精品国际久久久久999波多野 | 亚洲国产精品无码久久九九| 久久久久亚洲精品日久生情| 国产高潮国产高潮久久久| 久久精品夜色噜噜亚洲A∨| 无码专区久久综合久中文字幕| 国产亚洲成人久久| 国产精品视频久久久| 国产精品久久久久免费a∨| 一本伊大人香蕉久久网手机| 久久SE精品一区二区| 久久久噜噜噜久久| 精品国产一区二区三区久久| 亚洲国产精品无码久久一线| 久久精品国产精品亚洲艾草网美妙| 日韩久久久久久中文人妻| 亚洲国产精品无码久久九九 | 国产韩国精品一区二区三区久久| 狠狠色丁香婷婷久久综合五月| 99精品久久久久久久婷婷| 99国产精品久久久久久久成人热| 亚洲愉拍99热成人精品热久久| 久久无码一区二区三区少妇| 久久se精品一区二区影院| 91久久精品视频| 一级做a爰片久久毛片人呢| 99久久伊人精品综合观看| 精品国产福利久久久| 91精品国产高清久久久久久国产嫩草 | 久久精品国产免费观看|