在託管模式下啓動GWT時,可以在applet和GWT應用程序之間進行通信(反之亦然)?我認爲不,因爲applet只能與JavaScript通信(通過LiveConnect),但GWT的託管模式不會產生任何JS ...GWT託管模式和小程序
回答
儘管託管模式運行jvm中的部分代碼,但所有jsni/dom /本地調用委託給瀏覽器,所以在你的情況下應該沒有什麼區別,你可以調用js與你的applet進行通信。當然,不可能的是在相同的調試器會話中調試gwt和applet代碼。
撥叫GWT小程序的方法,你需要像JSNI塊:
private native Object callFoo(String param) /*-{
var appplet = document.getElementById('myapplet');
return applet.foo(param);
}-*/
,並從你的小應用程序調用GWT代碼,你需要另一個JSNI方法導出GWT代碼(注意,你必須在您的入口點調用一次)
private native void exportBar() /*-{
window.bar = function(param) {
return @com.examle.MyClass::myStaticMethod(*)(param);
}
}-*/
不管怎樣,因爲所有的鍋爐板代碼需要(包裝和JSNI)是自動生成的,我知道有小程序溝通的最佳方法是使用gwtai。
Gwtai,在託管模式下工作沒有問題,雖然他們在他們的網站上說don't expect it to be stable
,它足夠穩定,我已經在生產中用了很長時間。
GwtAI提供易於使用的跨瀏覽器的Java小程序整合谷歌Web工具包(GWT)的項目。 GwtAI包含許多實用程序和幫助程序類,例如自動創建包裝小部件和與Java小程序通信的機制。
您需要下載兩個文件(GwtAI-client.jar中和GwtAI-core.jar添加),並在項目中包含的類路徑,然後修改.ui.xml
文件繼承gwtai,你將能夠啓動編碼。
首先,您必須在gwt代碼中定義applet接口,以便使用延遲綁定的GWT編譯器創建通信類實現。
@ImplementingClass(MyClassImpl.class)
@Height("60") @Width("350") @Archive("GwtAI-Client.jar, MyApp.jar")
public interface MyApplet extends Applet {
public Object foo();
}
然後你必須在你的小程序代碼中實現這個接口。
public class MyClassImpl extends JApplet implements MyApplet {
public Object foo(){
return "Hello";
}
}
最後使用小程序從您的GWT應用
MyApplet applet = GWT.create(MyApplet.class);
Object foo = applet.foo();
閱讀GettingStarted導向以獲得更多信息。
感謝您的詳細解答。所以,如果我通過JSNI代碼調用applet,它會工作嗎?附:我不想使用'GWT-AI',因爲'GwtAI還不適合用於生產......不要指望它穩定。「不管怎樣,謝謝。 – MyTitle 2013-04-07 10:41:21
是的,任何jsni都以託管模式工作。我有生產中的錢。更新了我的答案。 – 2013-04-07 11:22:15
- 1. GWT Maven託管模式
- 2. GWT user.agent託管模式?
- 3. Maven的,GWT和託管模式
- 4. DebugIds在GWT應用程序託管模式
- 5. GWT託管模式與連接到127.0.0.1
- 6. GWT託管模式非常慢
- 7. GWT + Spring託管模式不工作
- 8. GWT序列化政策託管模式不同步
- 9. GWT:「管理員」和「正常模式」應用程序的示例
- 10. GWT中託管/開發模式和Web模式之間的區別
- 11. 在GWT託管模式下測試html 5應用程序緩存
- 12. 錯誤在託管模式下運行新gwt應用程序,OS X 10.6
- 13. GWT應用程序404連接到託管模式下的RPC servlet
- 14. WCF以Web應用程序和兼容模式託管
- 15. 多模塊的Maven GWT項目 - 在託管模式問題
- 16. 託管GWT項目
- 17. Rails託管小應用程序
- 18. Rails託管小照片應用程序
- 19. 在網絡模式下獲取會話null在GWT應用程序中,但不在託管模式下
- 20. GWT程序是否有辦法確定它是處於託管模式還是Web模式?
- 21. 如何提高GWT託管模式/編譯時間?
- 22. 如何爲GWT(2.0)託管模式設置JNDI?
- 23. GWT託管模式不能在Mac上的Eclipse Helios中工作
- 24. 在託管模式下運行的微在GWT
- 25. 在GWT託管模式下更新依賴關係
- 26. 如何在GWT託管模式下開發Google API?
- 27. GWT的託管模式碼頭從哪裏運行?
- 28. 的AccessControlException而在GWT使用JDBC連接MySQL的託管模式
- 29. gwt託管模式如何觀察變化?
- 30. GWT - 託管模式字體看起來比編譯版本大
更新了我的回覆,希望它對您有用 – 2013-04-07 10:03:56