2012-07-27 25 views
0

我正在使用Eclipse RAP編寫RAP應用程序。客戶端可以是任何瀏覽器,iPad或Android平板電腦(使用Tabris)。有沒有機會找出哪個客戶端發送了請求?Tabris,Eclipse RAP:是否有一個公共API來了解哪個客戶端請求了該頁面?

我的問題的背景是: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文件夾來運行,這也不是很好。

在此先感謝您的幫助和信息, Tobias。

回答

2
+0

非常感謝,這正是我所需要的。 – baumato 2012-08-03 14:29:15

+0

你的鏈接不工作。做一些needFull – 2013-08-12 07:47:45

+0

這一個工程:https://github.com/eclipsesource/tabris/blob/master/com.eclipsesource.tabris/src/com/eclipsesource/tabris/device/ClientDevice.java – Holger 2013-09-05 06:47:53

0

一種替代的方法,而不是使用ClientDevice是使用RWT.getClient()。

如果(RWT.getClient()的instanceof Web客戶端){ .... }

這有時是有用的,因爲如果在web客戶端訪問應用ClientDevice可以爲空。這是一個僅對移動客戶端atm有效的客戶端服務。

相關問題