Vaadin中的客户端浏览器检测

Ger*_*hof 5 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;
Run Code Online (Sandbox Code Playgroud)

无法找到WebBrowser从我的应用程序中访问的方法.

  1. 我是否选择了正确的浏览器区分方法?
  2. 为什么访问BrowserInfo失败?

Ger*_*hof 10

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

要在服务器端获取用户代理字符串,以下代码片段可以完成以下任务:

ApplicationContext context = this.getContext();
if (context instanceof WebApplicationContext) {
   String userAgent = ((WebApplicationContext)this.getContext()).
getBrowser().getBrowserApplication();
}
Run Code Online (Sandbox Code Playgroud)