2014-10-08 104 views
0

我使用的Grails 2.3.4和mysql是mysql:mysql-connector-java:5.1.24'並有163個GSP文件,每次當我運行腳本war或任何其他創建war文件顯示它下面的錯誤戰爭包裝錯誤的Grails 2.3.4

.Error 
| 
WAR packaging error: encoded string too long: 70621 bytes 

並且沒有超過64kb的任何gsp文件,並且我已經在buildconfig.groovy中評論了grails.project.fork但我仍然遇到問題請幫忙。

+0

也許有一個遺留物從先前的構建剩餘。你是否嘗試過所有的Grails?否則,您可以通過查看項目的工作目錄並查看哪些文件實際正在編譯,從而通過排除過程來確定哪個文件正在被打破。 – DanArl 2014-10-08 07:18:26

+0

我已經嘗試過grails clean,但它不工作,在工作目錄中只有101個gsp文件,但總體gsp文件是163.如何解決這個問題?請幫忙 – 2014-10-08 08:27:23

回答

1

我懷疑這是你想看到的答案:)我無法想象你有一個很好的理由可以接近GSP的最大尺寸。你甚至不應該知道這個數字是多少,只是它比你需要的要高。

在這些巨大的頁面中,您已經有了大量的代碼或者大量的HTML(或者兩者兼有)。有很多明顯的策略可以讓你的GSP節食。使用taglibs將很多代碼(不應該在GSP中使用,這不是PHP)從視圖渲染層移出它所屬的控制器和服務層。您可以將靜態和大多數靜態HTML塊提取到包含/模板中。

這裏可能還有很多重複的工作 - 如果沒有大量的副本,很難獲得這麼多的文件。當文件變得非常大時,很難保持對什麼地方的總體感 - 我們的大腦只能在超載之前處理一定數量的數據。你也傾向於開始錯放小物件,並在那裏部分吃午餐,這隻會讓事情變得更糟。

如果您沒有時間進行重大重構,那麼如果您遠離了這個項目,甚至是簡單地移動到標籤庫和模板而沒有考慮正確設計工作,就會得到結果去。至少直到你再次達到極限:)

+0

謝謝你的回覆,答案很有幫助。 – 2014-10-09 08:49:35