jsp的內容可以即時更新,為什麼grails 的gsp卻不行

189 views
Skip to first unread message

derekypp peng

unread,
Sep 6, 2010, 11:58:58 PM9/6/10
to grail...@googlegroups.com
請問大家一下:
                      我在tomcat隨便寫了一個test.jsp 然後我更改裡面的內容,再重新整理browser 馬上就可以看到更改後的內容
                       
                      而我用grails 弄出一個war ,我自己unzip 並把它放在webapps裡面,發現裡面也有\webapps\(專案名稱)\WEB-INF\grails-app\views\layouts
                      我更改了main.gsp 但我重新整理browser 為什麼這樣就看不到 我之前所改過的東西呢?


                      主要有上面的疑問是,想說如果grails已經這麼方便了,如果又可以像php一樣,可以在線上直接修改就更方便了
                      (我之前好像有問過類似問題,但那是grails vs PHP 這次是jsp vs grails)


                      謝謝大家

Phoenix

unread,
Sep 7, 2010, 1:55:17 AM9/7/10
to grail...@googlegroups.com
如果你是用IE,请修改IE临时文件设置: 检查所存网页的较新版本---》每次访问网页时。 因为有时候IE缓存会影响刷新。


2010/9/7 derekypp peng <dere...@gmail.com>
--
您收到此邮件是因为您订阅了 Google 网上论坛的“Grails联盟-GrailsUnion”论坛。
要向此网上论坛发帖,请发送电子邮件至 grail...@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 grailsunion...@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/grailsunion?hl=zh-CN 访问此网上论坛。



--
Best Regards

**************************************************
Phoenix
Mobile :  68540371
Email  :  pho...@linkpower.com
Tel       :  23323373
Fax     :  23323335
LinkPOWER Technology Co. Ltd.
**************************************************

CONFIDENTIALITY NOTICE: This message is intended only for the use of the
individual or entity to which it is addressed, and may contain information
that is privileged, confidential and exempt from disclosure under applicable
law. If you are not the intended recipient, please contact the sender by
reply email and destroy all copies of the original message

derekypp peng

unread,
Sep 7, 2010, 2:25:27 AM9/7/10
to grail...@googlegroups.com

我已經將IE缓存清空了但仍然無效
也試著在網址後面多加參數  http://127.0.0.1/lienjingbook/lieBookPage/list?book_id=1&time=123455667
讓browser以為是不同的網頁,仍然是舊的顯示內容

Phoenix

unread,
Sep 7, 2010, 2:31:47 AM9/7/10
to grail...@googlegroups.com
在IDE如IDEA中运行debug模式,环境为dev,修改gsp是可以及时更新的。 我怀疑打包成war时,如果不是使用dev而是使用prod环境,有可能导致gsp不会自动检查更新。 你试试用dev打包war看看。


2010/9/7 derekypp peng <dere...@gmail.com>

derekypp peng

unread,
Sep 7, 2010, 2:54:04 AM9/7/10
to grail...@googlegroups.com
我試著用grails dev war 產生war 
他產生的war檔 在project裡面的target裡面還多一個文字檔叫\target\classes\gsp\views.properties

這是它的內容:
#Precompiled views for myCRM
#Tue Sep 07 14:37:28 CST 2010
/WEB-INF/grails-app/views/cmSystype/create.gsp=gsp_myCRM_cmSystypecreate_gsp
/WEB-INF/grails-app/views/cmSystype/show.gsp=gsp_myCRM_cmSystypeshow_gsp
/WEB-INF/grails-app/views/index.gsp=gsp_myCRMindex_gsp
/WEB-INF/grails-app/views/cmSystype/edit.gsp=gsp_myCRM_cmSystypeedit_gsp
/WEB-INF/grails-app/views/layouts/main.gsp=gsp_myCRM_layoutsmain_gsp
/WEB-INF/grails-app/views/cmSystype/list.gsp=gsp_myCRM_cmSystypelist_gsp
/WEB-INF/grails-app/views/error.gsp=gsp_myCRMerror_gsp

內容看起來大約是說 我原本的view/xx.gsp  被轉換成什麼xx.class
去class的目錄都有找到對應的class檔案

因為變成了class 所以變成war之後我再怎麼改gsp不會改變網頁內容嗎?

Ali Yang

unread,
Sep 7, 2010, 2:57:02 AM9/7/10
to grail...@googlegroups.com
这个应该是一种优化机制。JSP在运行是也会先生成class文件,之后的JSP运行都是直接运行相应的class文件的。

2010/9/7 derekypp peng <dere...@gmail.com>



--
Ali Yang
----------------------------------------
Blog: http://ssailyang.javaeye.com
Twitter: https://twitter.com/aliyang
MSN: yang_...@hotmail.com
QQ: 407131746
----------------------------------------

Phoenix

unread,
Sep 7, 2010, 3:00:43 AM9/7/10
to grail...@googlegroups.com
明白,Grails1.2之后,增加的新特性之一就是预编译gsp,这样使得部署grails应用后不需要实时编译gsp。但带来的问题似乎就是你这种情况了。

那么你有没有尝试删除那些对应的class文件呢?


2010/9/7 derekypp peng <dere...@gmail.com>

derekypp peng

unread,
Sep 7, 2010, 3:01:07 AM9/7/10
to grail...@googlegroups.com
但是JSP是更改了內容 頁面會隨之改變 , Grails 則不會

因為常常會上傳很大的war上去才發現,有一兩個錯字打錯
想要直接線上修改,但改了都沒有反應

本來以為是java系列都這樣,後來試了一下jsp 卻可以像php 隨改隨變
只有grails才有這樣的問題嗎
33A.gif

Tigerf

unread,
Sep 7, 2010, 3:10:41 AM9/7/10
to grail...@googlegroups.com
product模式下是不行的,类似于将jsp提前编译的做法。(这种做法也会导致不能临时修改)
如果你的产品还在调测阶段可以部署dev模式下的war文件。

Thanks & Best Regards
Tiger Feng


2010/9/7 derekypp peng <dere...@gmail.com>
33A.gif

Ali Yang

unread,
Sep 7, 2010, 3:12:49 AM9/7/10
to grail...@googlegroups.com
我觉得如此设计还算挺合理的,测试的时候你可以用 grails tomcat:run 来测试,如果打成 War 那就是 Product 阶段了,此时性能更重要。

2010/9/7 derekypp peng <dere...@gmail.com>
33A.gif

derekypp peng

unread,
Sep 7, 2010, 3:17:19 AM9/7/10
to grail...@googlegroups.com
所以大家的結論是,打成war之後 
就無法即時修改gsp內容的意思嗎?

這樣雖然性能提升,但也會帶來一些不變的地方
沒有選項可以選擇這項設定嗎?
33A.gif

Ali Yang

unread,
Sep 7, 2010, 3:19:37 AM9/7/10
to grail...@googlegroups.com
应该是可以关了预编译功能吧

2010/9/7 derekypp peng <dere...@gmail.com>
33A.gif

Phoenix

unread,
Sep 7, 2010, 3:24:48 AM9/7/10
to grail...@googlegroups.com
请查看jira记录:
http://jira.codehaus.org/browse/GRAILS-6180

Disabling precompilation isn't necessary. It's possible to add grails.gsp.reload.enable=true to Config.groovy or set the "grails.gsp.enable.reload" System property to "true" (-Dgrails.gsp.enable.reload=true command line argument) to enable GSP reloading. There will be a negative effect on performance since some internal caching is disabled when reloading is enabled in Grails. GRAILS-5787 would be a better solution, but it's not implemented yet.


其实也挺逗,“http://jira.codehaus.org/browse/GRAILS-2890” 这个帖子建议增加预编译功能;等到grails1.2之后能预编译了,大家又说需要能关闭预编译。 看来程序员也是难伺候的主。哈哈!


2010/9/7 Ali Yang <yang...@gmail.com>
33A.gif

Ali Yang

unread,
Sep 7, 2010, 3:42:21 AM9/7/10
to grail...@googlegroups.com
哈哈,众口难调

2010/9/7 Phoenix <pho...@linkpower.com>
33A.gif

Phoenix

unread,
Sep 7, 2010, 3:51:43 AM9/7/10
to grail...@googlegroups.com
是啊。

请注意帖子:http://jira.codehaus.org/browse/GRAILS-5787,我想这个新特性才是我们真正想要的,状态是fixed,但Grails版本是1.3.5。 哪位有兴趣可以尝试一下。

请注意第一条评论:
This feature would be great because grails.gsp.enable.reload=true really hurts performance and reploying a WAR is too heavy for a view fix only !! 

他说grails.gsp.enable.reload=true对于性能影响还是比较大的。。。


2010/9/7 Ali Yang <yang...@gmail.com>
33A.gif

derekypp peng

unread,
Sep 7, 2010, 8:06:00 AM9/7/10
to grail...@googlegroups.com
Grails版本是1.3.5才有那個特性阿, 我目前用的版本是1.3.2
33A.gif

Chao Liu

unread,
Sep 7, 2010, 10:46:07 AM9/7/10
to grail...@googlegroups.com
上了生产的东西还要频繁改动么

2010/9/7 derekypp peng <dere...@gmail.com>



--
My Grails Powered Website:
http://www.goal98.com

Grails Melody Plugin:
http://www.grails.org/plugin/grails-melody

Grails Templar Poject:
http://code.google.com/p/grails-templar/
33A.gif

derekypp peng

unread,
Sep 7, 2010, 10:55:25 AM9/7/10
to grail...@googlegroups.com
會耶,理論上成了product是應該設計完善才上線

可是客戶才是大爺阿…我有一次有一個網站上線半年了,客戶才說:『我想換一下網站的名稱』 @@"

跟他說換網站名稱會影響SEO 他仍堅持要改,我也只好乖乖換了.......
33A.gif

Chao Liu

unread,
Sep 7, 2010, 10:57:36 AM9/7/10
to grail...@googlegroups.com
就算是改也应该是改生产代码,然后打包发布啊,怎么会直接在服务器上改GSP呢

2010/9/7 derekypp peng <dere...@gmail.com>
33A.gif

derekypp peng

unread,
Sep 7, 2010, 11:14:21 AM9/7/10
to grail...@googlegroups.com
我會這麼做是有兩個原因:
 第一是因為上傳太慢,如果只是打錯一個中文字就像直接在服务器上改GSP(當然也會自已本機上的改生产代码),因為一個grails War 就動輒20~30MB
 實在是花太多時間了

第二可能是會這樣做的因為是,我曾用申請google analytics,他會產生一組script 可是那組script偏偏又要上線後的網址才可以正確應對
       因為這樣又傻傻的重新上傳一次了 >"<                             
33A.gif

Alex wang

unread,
Sep 7, 2010, 7:56:17 PM9/7/10
to grail...@googlegroups.com
其实即使是JSP也不是都是直接修改就立即生效的,不同的容器有不同的策略,一般商业app server都有一个开关控制。


2010/9/7 derekypp peng <dere...@gmail.com>
33A.gif
Reply all
Reply to author
Forward
0 new messages