GWT - Automatic Resource Inclusion

之前做的案子,使用的是GWT1.4.62。
最近因為功能修改的關係,要順便升級到GWT1.5.3。
瞎忙了兩天,沒注意自己code在升級過程中有貼錯檔名的地方。
誤以為是版本的差異,造成舊版的有些方法不能用...XD




發生錯誤的地方是仿 http://google-web-toolkit.googlecode.com/svn/javadoc/1.5/com/google/gwt/i18n/client/Dictionary.html 的方法,製作的多語系功能,其中 JavaScript object 的部份,是另外獨立宣告在四個不同的 JS 檔案,然後利用 php 判別後,動態載入。
真正造成不能編譯的原因是:1. 貼 GWT 程式碼貼錯其他初始參數、2. 貼錯載入的 JS 檔名,
沒注意到真正的問題的我,開始認真的找起資料來 debug,一開始找錯方向,找到 http://code.google.com/p/google-web-toolkit-doc-1-5/wiki/DevGuideSpecifyingLocale ,差點沒把自己嚇死,因為該網頁上面的作法與目前的完全不一樣...T^T

後來有發現自己真正錯的地方,除了順利解決無法編譯的問題,也順便把注意到 Automatic Resource Inclusion做個紀錄。

Debug 找資料的過程中,在 http://www.scribd.com/doc/7470980/Refcardz-01-GWT-Style-Configuration-and-JSNI-Reference#document_metadata 的第四頁右下角,看到 "Resource Injection" 的部份,以為是自己要的解決辦法,就照著修改下去,卻仍不見效果,原本設計動態載入的 JS 檔變成了靜態...囧rz

去官方找了一下其他文件,在 http://code.google.com/p/google-web-toolkit-doc-1-5/wiki/DevGuideAutomaticResourceInjection 看到了原因...T^T
原來 Automatic Resource Inclusion 的載入方式,是在編譯的時候會寫死在 *.nocache.js ,目的是在呼叫 onModuleLoad() 之前就預先載入好,難怪我寫在 php 上的動態載入沒有反應。( 話說此時我已經早就發現,並修改好我真正的錯誤了)

0 意見: