Я хочу установить различные темы на свое приложение 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
из моего приложения также.
BrowserInfo
сбой?Как показал @quickanalysis, вы должны знать о разделении клиентских/серверных компонентов.
Для получения строки пользовательского агента на стороне сервера, следующий фрагмент кода выполняет работу:
ApplicationContext context = this.getContext();
if (context instanceof WebApplicationContext) {
String userAgent = ((WebApplicationContext)this.getContext()).
getBrowser().getBrowserApplication();
}
Из какого класса вы пытаетесь вызвать этот метод? BrowserInfo доступен на стороне клиента как WebBrowser на стороне сервера. Взгляните на название пакета.