Клиентское Определение браузера в Vaadin

Я хочу установить различные темы на свое приложение 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 сбой?

5
задан Gerhard Dinhof 2 February 2010 в 21:40
поделиться

2 ответа

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

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

ApplicationContext context = this.getContext();
if (context instanceof WebApplicationContext) {
   String userAgent = ((WebApplicationContext)this.getContext()).
getBrowser().getBrowserApplication();
}
10
ответ дан 13 December 2019 в 05:34
поделиться

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

2
ответ дан 13 December 2019 в 05:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: