0

我正在使用 Eclipse RAP 编写 RAP 应用程序。客户端可以是任何浏览器、iPad 或安卓平板电脑(使用 Tabris)。有没有机会找出哪个客户端发送了请求?

我的问题的背景是:Tabris 直到现在才支持 SashForms。出于这个原因,我想渲染一个 SashFrom 以防我为 Web 客户端提供服务,但如果为 android 客户端提供服务,我不想创建一个 SashForm。我可以做这样的事情:

public static boolean isAndroid() {
    return getUserAgent().contains(Constants.ID_ANDROID);
}

private static String getUserAgent() {
    return RWT.getRequest().getHeader(Constants.USER_AGENT);
}

public static boolean isIos() {
    return getUserAgent().contains(Constants.ID_IOS);
}

public static boolean isWeb() {
    return !isAndroid() && !isIos();    
}

但我想避免这种方法,因为它使用内部 API,并且由于我使用的是独立 RAP,我需要将 servlet-api.jar 添加到 WEB-INF/lib 文件夹以使其运行,这也不是很好的。

提前感谢您的帮助和信息,托拜厄斯。

4

2 回答 2

2

我认为这会有所帮助:https ://github.com/eclipsesource/tabris/blob/master/com.eclipsesource.tabris/src/com/eclipsesource/tabris/ClientDevice.java

于 2012-08-03T06:01:10.553 回答
0

一种替代使用 ClientDevice 的方法是使用 RWT.getClient()。

if( RWT.getClient() instanceof WebClient ) { .... }

这有时很有用,因为如果 Web 客户端访问应用程序,ClientDevice 可以为空。这是一项仅对移动客户端 atm 有效的客户端服务。

于 2013-09-05T06:50:59.603 回答