Vaadin中的客户端浏览器检测

时间:2010-02-02 21:40:49

标签: browser browser-detection vaadin

我想根据用户代理为我的Vaadin应用程序设置不同的主题。 特别是我想至少区分移动设备(iPhone,Android,...)和桌面网络浏览器。

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会失败?

2 个答案:

答案 0 :(得分:10)

正如@quickanalysis指出的那样,你必须意识到客户端/服务器端组件的分离。

为了在服务器端获取用户代理字符串,以下代码片段完成了这项工作:

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

答案 1 :(得分:2)

您尝试将此方法称为哪个班级? BrowserInfo在客户端可用作WebBrowser和服务器端。看看包命名。

相关问题