Pergunta

Quero definir temas diferentes para o meu aplicativo Vaadin, dependendo do agente do usuário. Em particular, quero distinguir pelo menos entre dispositivos móveis (iPhone, Android, ...) e navegador da web da área de trabalho.

A API de Vaadin revela duas classes interessantes:

BrowserInfo parece fazer o trabalho perfeitamente para minhas necessidades, mas falha em instantar através de seu get-método:

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

Não foi possível encontrar uma maneira de acessar WebBrowser De dentro do meu aplicativo também.

  1. Eu escolhi a abordagem certa para a distinção do navegador?
  2. Por que o acesso BrowserInfo falhou?
Foi útil?

Solução

Como o @quickanalysis apontou, você está ciente da separação de componentes do lado do cliente/servidor.

Para colocar a sequência do agente do usuário no lado do servidor, o seguinte snippet de código faz o trabalho:

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

Outras dicas

De que classe você está tentando chamar esse método? O navegador está disponível no lado do cliente como Webbrowser AR no lado do servidor. Dê uma olhada na nomes do pacote.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top