通过GWT平台实现多视图?

通过GWT平台实现多视图?,gwt,mvp,gwt-mvp,gwt-platform,gwtp,Gwt,Mvp,Gwt Mvp,Gwt Platform,Gwtp,我正在实现一个web应用程序,它将根据不同的浏览器支持不同的视图。例如,在移动浏览器中,它将向用户显示更小的视图,用户界面元素更少。但我们希望使用相同的演示者 我手头有一个解决方案-在ClientModule中添加浏览器类型检测逻辑,例如: if (browser == "iphone") { bindPresenter(HomePresenter.class, HomePresenter.MyView.class, HomeView.class, HomePresenter.MyPro

我正在实现一个web应用程序,它将根据不同的浏览器支持不同的视图。例如,在移动浏览器中,它将向用户显示更小的视图,用户界面元素更少。但我们希望使用相同的演示者

我手头有一个解决方案-在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) 哪条路最好,为什么

提前谢谢

致以最诚挚的问候,

GWT不允许您设置自定义用户代理类型。您只能使用他们的壁虎、壁虎1_7、safari、IE6、IE7、IE8和opera

也就是说,您可以使用Window.Navigator.getUserAgent(),或者通过属性提供程序,设置相应的逻辑切换


有关MVP,请参见上的类似问题。

gwt samples文件夹中有一个示例,它做了您想要的事情。我在我的项目中使用了示例代码的一个版本——除了使用Gin来处理clientfactory功能。该样本称为mobilewebapp。它涉及到在.gwt.xml中使用formfactor方法来确定您所在的系统,在本例中,它将其分解为桌面、移动和平板电脑。然后,在稍后的gwt.xml中,它根据形式因素交换了客户机工厂,而我交换了gin模型。这里有一个链接到源代码

查看gwtp谷歌集团,这是一个很好的源代码,有人发布了一份pdf,介绍了他在那里为解决清酒问题所做的努力。
无论如何,如果我没记错的话,他为每个客户机持有多个包含演示者和视图的gin模块,在加载时运行自定义js代码,然后在ginClinet类上安装正确的模块。

谢谢你的回答,你提供的链接可以让我找到更好的解决方案。是的,我注意到了这个示例,它非常好。我也打算这样做。我用的是GWTP和杜松子酒。谢谢你的回答。你是如何在GIN中使用它的?谢谢。我有不同的GIN模块用于台式机、手机和平板电脑。我没有交换客户端工厂,而是交换了gin模块。gin模块包含客户端工厂中的所有内容。