我正在实现一个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) 哪种方式最好,为什么?
提前感谢!
致以最良好的问候,
嘉宽W
在gwt samples文件夹中有一个示例可以执行您想要的操作。我在项目中使用了示例代码的一个版本——除了使用Gin来处理clientfactory功能。示例名为mobilewebapp。它包括在.gwt.xml中使用formfactor方法来确定您所在的系统——在这种情况下,它将其分为桌面、移动和平板电脑。然后在稍后的gwt.xml中,它基于形状因子交换客户工厂——我交换杜松子酒模型。以下是mobilwebapp 的来源链接
GWT不允许设置自定义用户代理类型。您仅限于壁虎、壁虎1_7、狩猎、IE6、IE7、IE8和歌剧。
也就是说,您可以直接访问用户代理,并使用Window.Navigator.getUserAgent()或通过属性提供程序将逻辑设置为相应的切换。
请参阅关于如何在GWT for MVP中进行移动浏览器检测的类似问题。
查看gwtp谷歌小组,这是一个很好的来源,有人在那里发布了一份关于他在清酒问题上所做努力的pdf。无论如何,如果我没有记错的话,他为每个客户端保存了多个带有演示者和视图的gin模块,在加载时运行自定义js代码,然后在ginClinet类上安装正确的模块。