Vaadin でのクライアント ブラウザの検出
-
25-09-2019 - |
質問
ユーザー エージェントに応じて、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
私のアプリケーション内からでも。
- ブラウザを区別するために正しいアプローチを選択しましたか?
- なぜアクセスすると
BrowserInfo
失敗?
解決
@quickanalysisが指摘したように、あなたはクライアント - /サーバ側の成分の分離に注意することがきます。
サーバー側でユーザーエージェント文字列を取得するために、次のコードスニペットは、仕事をしていません
ApplicationContext context = this.getContext();
if (context instanceof WebApplicationContext) {
String userAgent = ((WebApplicationContext)this.getContext()).
getBrowser().getBrowserApplication();
}
他のヒント
どのようなクラスからは、このメソッドを呼び出そうとしていますか? BrowserInfoは、サーバー側AR WEBブラウザなどのクライアント側でご利用いただけます。パッケージの命名を見てみましょう。
所属していません StackOverflow