Browser Vaadin中的客户端浏览器检测

Browser Vaadin中的客户端浏览器检测,browser,browser-detection,vaadin,Browser,Browser Detection,Vaadin,我想根据用户代理为我的Vaadin应用程序设置不同的主题。 特别是,我想至少区分移动设备(iPhone、Android等)和桌面web浏览器 Vaadin的API揭示了两个有趣的类: BrowserInfo似乎可以完美地满足我的需要,但无法通过其get方法进行实例化: SEVERE: javax.servlet.ServletException: ... Caused by: java.lang.UnsatisfiedLinkError: com.vaadin.terminal.gwt.

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

Vaadin的API揭示了两个有趣的类:

BrowserInfo
似乎可以完美地满足我的需要,但无法通过其
get
方法进行实例化:

SEVERE: javax.servlet.ServletException: ...
Caused by: java.lang.UnsatisfiedLinkError: com.vaadin.terminal.gwt.client.BrowserInfo.getBrowserString()Ljava/lang/String;
在我的应用程序中也找不到访问
WebBrowser
的方法

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

  • 您试图从哪个类调用此方法?BrowserInfo在客户端可用,而WebBrowser在服务器端可用。看看包的命名。

    正如@quickanalysis所指出的,您必须注意客户端/服务器端组件的分离

    要在服务器端获取用户代理字符串,请使用以下代码段:

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

    向我指出客户机/服务器组件之间的差异会有所帮助。谢谢!(+1)