2009-10-30 108 views
4

我與NetBeans和Eclipse試過,沒有運氣...(coudn't嘗試的IntelliJ IDEA)如何調試一個gsp頁面? (無Grails的,只是GSP)

我給了一個快速瀏覽一下螞蟻的代碼

http://kickjava.com/src/groovy/servlet/TemplateServlet.java.htm

,它給我,.gsp網頁被轉換爲.groovy作爲在內存中的servlet(Groovlets的)(我可能是錯的)印象...

所以也許它不是那麼容易調試GSP我雖然。 ..

所以,有人可以告訴我該怎麼做嗎?

pd:通過調試,我的意思是像逐步瀏覽代碼,檢查變量,添加手錶等所有類型的東西,顯然。不是(不那麼)很好的舊的printf方法...

回答

6

你的GSP中的大多數邏輯應該封裝在TagLibs中,並且你可以調試它們(至少使用IntelliJ),就像任何其他Groovy代碼一樣容易。

如果你的GSP中有很多scriptlet代碼(你不應該這樣做),並且你想調試它,那麼你不能做比println多得多的代碼。另一種可能性是查看爲您的GSP生成的Groovy代碼的來源。這可以通過在URL中添加showSource參數來完成,如here所述。

+0

關於標籤庫的好處,不知道它們可以被調試... – opensas 2009-10-31 03:27:30

3

我用一個黑客:添加一個方法來任何控制器,如static def debugme(def param) { def a = param },並從GSP代碼調用它:<% ThisController.debugme(this) %>,或<% ThisController.debugme(params) %>

(你知道你沒有編輯器後重新啓動應用程序或查看,對嗎?)

我也不認爲所有的邏輯都應該在taglibs中:頁面特定的邏輯應該在控制器或視圖中清晰可見。我們擁有控制器或域類中的大部分邏輯。

2

將設置添加到Config.groovy中,並將生成的gsp文件寫入目錄:grails.views.gsp.keepgenerateddir ='/ some/existing/directory' (目標目錄必須存在並且是可寫)

的更多信息: http://jira.codehaus.org/browse/GRAILS-4422

應該可以用一個標準的Java調試程序調試生成的Groovy代碼。 很久以前,當我這樣做的時候(當我爲grails創建補丁時),我想我使用jswat(http://code.google.com/p/jswat/)來調試gsps。我無法使用eclipse來查找源文件,但現在可能在Spring Tool Suite Eclipse中有效。 您必須逐步/逐步調試groovy代碼並使用過濾器,否則您可能會失去步驟點(因爲關閉?)。這已經是另一回事了......