2

我正在实现一个 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

4

3 回答 3

2

gwt 示例文件夹中有一个示例可以执行您想要的操作。我在我的项目中使用了示例代码的一个版本——除了使用 Gin 来处理 clientfactory 功能。该示例称为 mobilewebapp。它涉及在您的 .gwt.xml 中使用格式因子方法来确定您在哪个系统上 - 在这种情况下,它将它分解为桌面、移动和平板电脑。然后稍后在您的 gwt.xml 中,它会根据外形尺寸换取客户端工厂 - 我改为换取 gin 模型。这是mobilwebapp源的链接

于 2012-03-22T14:25:41.850 回答
1

GWT 不允许您设置自定义用户代理类型。您仅限于他们的gecko、gecko1_7、safari、IE6、IE7、IE8 和opera集。

话虽如此,您可以直接访问用户代理并设置逻辑以使用Window.Navigator.getUserAgent()或通过属性提供程序进行相应切换。

请参阅有关如何在 GWT for MVP中进行移动浏览器检测的类似问题。

于 2012-03-22T03:36:44.110 回答
0

检查 gwtp google group,它是一个很好的来源,并且有人发布了一份关于他在其中为清酒问题所做的努力的 pdf。无论如何,如果我没记错的话,他为每个带有演示者和视图的客户端保存多个 gin 模块,在加载时运行自定义 js 代码,然后在 ginClinet 类上安装正确的模块。

于 2012-03-23T10:02:01.893 回答