Обнаружение клиентского браузера в Vaadin - PullRequest
5 голосов
/ 03 февраля 2010

Я хочу установить различные темы для моего приложения Vaadin, в зависимости от пользовательского агента.В частности, я хочу провести различие как минимум между мобильными устройствами (iPhone, Android, ...) и настольным веб-браузером.

API Vaadin раскрывает два интересных класса:

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 ]

10 голосов
/ 04 февраля 2010

Как отметил @quickanalysis, вы должны знать о разделении компонентов на стороне клиента и сервера.

Для получения строки пользовательского агента на стороне сервера, следующий фрагмент кода выполняет работу:

ApplicationContext context = this.getContext();
if (context instanceof WebApplicationContext) {
   String userAgent = ((WebApplicationContext)this.getContext()).
getBrowser().getBrowserApplication();
}
2 голосов
/ 03 февраля 2010

Из какого класса вы пытаетесь вызвать этот метод? BrowserInfo доступен на стороне клиента, а WebBrowser - на стороне сервера. Посмотрите на наименование пакета.

...