2010-02-02 10 views
5

Desidero impostare temi diversi per la mia applicazione Vaadin, a seconda del programma utente. In particolare, voglio distinguere almeno tra dispositivi mobili (iPhone, Android, ...) e browser web desktop.Rilevamento browser client in Vaadin

API Vaadin rivela due classi interessanti:

BrowserInfo sembra fare il lavoro perfettamente per le mie esigenze, ma non riesce a istanze attraverso il suo get -Metodo:

SEVERE: javax.servlet.ServletException: ... 
Caused by: java.lang.UnsatisfiedLinkError: com.vaadin.terminal.gwt.client.BrowserInfo.getBrowserString()Ljava/lang/String; 

Impossibile trovare un modo per accedere a WebBrowser dalla mia applicazione.

  1. Ho scelto l'approccio giusto per la distinzione tra browser?
  2. Perché l'accesso a BrowserInfo non riesce?

risposta

10

Come ha sottolineato @quickanalysis, è necessario essere consapevoli della separazione dei componenti lato client/server.

Per ottenere la stringa user agent sul lato server, il seguente frammento di codice fa il lavoro:

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

Da quale classe si sta tentando di chiamare questo metodo? Il BrowserInfo è disponibile sul lato client come WebBrowser sul lato server. Dai un'occhiata alla denominazione del pacchetto.

+0

mi Indicando le differenze tra client/componenti server aiutato. Grazie! (+1 per quello) –