2012-03-22 32 views
2

我正在實現一個web應用程序,它將根據不同的瀏覽器支持不同的視圖。例如,在移動瀏覽器中,它將向使用較少UI元素的用戶顯示較小的視圖。但我們希望使用相同的演示者。通過GWT平臺實現多個視圖?

我手頭上有一個解決方案 - 添加瀏覽器類型中ClientModule檢測邏輯,e.g:

if (browser == "iphone") { 
    bindPresenter(HomePresenter.class, HomePresenter.MyView.class, HomeView.class, HomePresenter.MyProxy.class); 
} else if (browser == "ipad") { 
    bindPresenter(HomePresenter.class, HomePresenter.MyView.class, IPadHomeView.class, HomePresenter.MyProxy.class); 
} else { 
    bindPresenter(HomePresenter.class, HomePresenter.MyView.class, IPhoneHomeView.class, HomePresenter.MyProxy.class); 
} 

我想知道是否有可能使用某些方面像GWT平臺的延遲綁定。 (但我想遵循GWT-plarform的結構,而不是在xxx.gwt.xml中添加延遲綁定代碼)。

所以我的問題是:

1)是否有任何其他方式來實現上述功能?
2)哪種方式最好,爲什麼?

在此先感謝!

最好的問候,
家寬w^

回答

1

GWT不允許您設置自定義用戶代理類型。您僅限於其壁虎,gecko1_7,Safari,IE6,IE7,IE8和歌劇的套裝

這就是說,你可以access the user agent directly並設置你的邏輯來切換相應的Window.Navigator.getUserAgent(),或通過屬性提供商。

查看關於MVP的how to do mobile browser detection in GWT的相似問題。

+0

感謝您的回答,您提供的鏈接可以讓我找到更好的解決方案。 – 2012-03-22 08:01:59

2

在gwt samples文件夾中有一個例子,它可以完成像你一樣的工作。我在我的項目中使用了示例代碼的一個版本 - 除了使用Gin來處理clientfactory功能。該示例被稱爲mobilewebapp。它涉及到在.gwt.xml中使用formfactor方法來確定您所在的系統 - 在這種情況下,它將其分解爲桌面,移動設備和平板電腦。然後在你的gwt.xml中,它根據外形因素交易客戶工廠 - 我換出杜松子酒模型。這裏是一個鏈接的源代碼mobilwebapp

+0

是的,我注意到了這個例子,這非常好。我也計劃使用這種方式。我正在使用GWTP&GIN。感謝您的回答。 – 2012-03-22 23:40:32

+0

你是如何在GIN中使用它的?謝謝。 – 2012-03-23 00:16:22

+0

我有不同的桌面,移動和平板電腦的杜松子酒模塊。我不換掉客戶工廠,而是換出杜松子酒模塊。杜松子酒模塊包含客戶工廠中的所有東西。 – Deanna 2012-03-23 01:12:02

0

檢查gwtp google組,它是一個很好的來源,並且有人發佈了關於他在那裏的清酒問題上努力的pdf。 無論如何,如果我沒有記錯,他爲演示者和視圖保存每個客戶端的多個杜松子酒模塊,在加載時運行自定義js代碼,並在ginClinet類上安裝正確的模塊。