2010-02-02 37 views
5

我想根據用戶代理爲我的Vaadin應用程序設置不同的主題。 我特別想區分移動設備(iPhone,Android,...)和桌面網絡瀏覽器。Vaadin中的客戶端瀏覽器檢測

Vaadin的API中出現了兩個有趣的課程:

BrowserInfo似乎對我的需要做的工作,但通過其get - 方法失敗的實例化:

SEVERE: javax.servlet.ServletException: ... 
Caused by: java.lang.UnsatisfiedLinkError: com.vaadin.terminal.gwt.client.BrowserInfo.getBrowserString()Ljava/lang/String; 

無法從我的應用程序中找到訪問WebBrowser的方法。

  1. 我爲瀏覽器區別選擇了正確的方法嗎?
  2. 爲什麼訪問BrowserInfo失敗?

回答

10

正如@quickanalysis指出的那樣,您必須意識到客戶端/服務器端組件的分離。

用於獲取用戶代理字符串在服務器端,下面的代碼片段做這項工作:

ApplicationContext context = this.getContext(); 
if (context instanceof WebApplicationContext) { 
    String userAgent = ((WebApplicationContext)this.getContext()). 
getBrowser().getBrowserApplication(); 
} 
2

從哪個類別嘗試調用此方法? BrowserInfo在客戶端作爲WebBrowser和服務器端提供。看看包裝的命名。

+0

指向我的客戶端之間的差異/服務器組件的幫助。謝謝! (+1) – 2010-02-04 06:58:17