質問

ユーザー エージェントに応じて、Vaadin アプリケーションに異なるテーマを設定したいと考えています。特に、少なくともモバイルデバイス (iPhone、Android など) とデスクトップ Web ブラウザーを区別したいと考えています。

Vaadin の API では、2 つの興味深いクラスが明らかになります。

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 失敗?
役に立ちましたか?

解決

@quickanalysisが指摘したように、あなたはクライアント - /サーバ側の成分の分離に注意することがきます。

サーバー側でユーザーエージェント文字列を取得するために、次のコードスニペットは、仕事をしていません

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

他のヒント

どのようなクラスからは、このメソッドを呼び出そうとしていますか? BrowserInfoは、サーバー側AR WEBブラウザなどのクライアント側でご利用いただけます。パッケージの命名を見てみましょう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top