我正在实现一个Web应用程序,它将根据不同的浏览器支持不同的视图。例如,在移动浏览器中,它会向UI元素较少的用户显示较小的视图。但我们想使用相同的演示者。
我手边有一个解决方案 - 在ClientModule中添加浏览器类型检测逻辑,例如:
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)哪种方式最好,为什么?
提前致谢!
最好的问候,
Jiakuan W
答案 0 :(得分:2)
gwt samples文件夹中有一个示例可以执行您想要的操作。我在我的项目中使用了一个示例代码版本 - 除了使用Gin来处理clientfactory功能。该示例称为mobilewebapp。它涉及在.gwt.xml中使用formfactor方法来确定您所在的系统 - 在这种情况下,它将其分解为桌面,移动设备和平板电脑。然后在你的gwt.xml中,它根据形状因子交换出客户工厂 - 我换掉了杜松子酒模型。以下是指向mobilwebapp
的来源的链接答案 1 :(得分:1)
GWT不允许您设置自定义用户代理类型。你只限于他们的 gecko,gecko1_7,safari,IE6,IE7,IE8和opera 。
话虽这么说,您可以access the user agent directly并设置逻辑以使用 Window.Navigator.getUserAgent()或通过属性提供程序进行相应切换。
在how to do mobile browser detection in GWT上查看关于MVP的类似问题。
答案 2 :(得分:0)
检查gwtp谷歌群组,它是一个很好的消息来源,有人发布了一个关于他在那里的清酒问题的努力的pdf。 无论如何,如果我没记错的话,他为每个客户端提供了多个gin模块和演示者和视图,在加载时运行自定义js代码,而不是在ginClinet类上安装正确的模块。