最近、Wicket で UserAgentによりページテンプレートの切り替えをできないか調べていました。
調べた結果、できそうなのではあり、いくつか方法がありましたので記載します。
方法1 getVariation を使う
これが最も簡単なやり方で、用途もいろいろ使えるかと思いました。
ページ単位に独自制御できます。
リンク先にサンプル実装もあったので、リンクを記載します。
14 Internationalization with Wicket 6.x に記載がありますが、Locale とセットで使用すると、
org.foo.MyBundle_zh_cmn
を取得する動作になり、どちらの設定も考慮する動作になっています。
方法2 ResourceStreamLocator を使う
How to change the html file location in Wicket に記載がありますが、
WebApplication
内で
getResourceSettings().setResourceStreamLocator(new MyOwnStreamLocator());
Mobile / PC で HTML 切り替えたくて、全ページに適用するなどの場合は、StremLocator が使えるのかと思います。
Wicket 7.8.0 でもこの方法を使用できました。
ユーザーエージェントの考慮などをStreamLocatorに実装しても良さそうです。
以下、他参考記事へのリンクになります。
方法3 ResourceFinder を追加する
Locator が、リソースを探すロジック切り替えるのに対して、こちらは探しにいくロジックを切り替えます。
ResourceStreamLocator
のlocate
メソッド内で、Finderを使って探しにいってますので、ResourceStreamLocator
の継承クラス内では、明示的に呼び出さないとResourceFinderが効いてこない作りになっていました。
wicket/ResourceStreamLocator.java at master · apache/wicket
ResourceFinder は、Locator の実装は変えないが、デフォルトとは別の場所に置く際に使うものだと思われます。
以下、他参考記事へのリンクになります。
以上です。
コメント