携帯用フレームワークの mobylet ですが、サイトが商用製品のような勢いでリニューアルされている。サイトのデザインももちろんのことだが、mobylet の説明についても情報が増えている。今まで、知る人ぞ知る部分だった mobylet.xml についても説明がある。これで、ますます利用しやすくなりますねー。
カテゴリー: Mobylet
リクエストエンコーディングの設定
Mobyletでは、EncodingFilterの代わりにMobyletFilterを使うことになるが、MobyletFilterでも基本的にはエンコーディングの設定は同じで、
<filter> <filter-name>mobyletfilter</filter-name> <filter-class>jp.sf.fess.filter.FessMobyletFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter>
みたいな感じ。コード的には、MobyletFilter の以下のメソッドで設定されることになる。というわけで、何も指定しなければ、windows-31j だね。
protected void initDefaultCharset(FilterConfig filterConfig) { String defCharsetName = null; if (filterConfig != null && (defCharsetName = filterConfig.getInitParameter("encoding")) != null) { Charset defCharset = Charset.forName(defCharsetName); if (defCharset != null) { SingletonUtils.put(defCharset); } } if (SingletonUtils.get(Charset.class) == null) { SingletonUtils.put(Charset.forName(DefCharset.WIN31J)); } }
PCのときにレスポンスをラップさせない
MobyletFilterを通ると、デフォルトでレスポンスがMobylet用にラップされますが(絵文字対策のためとかで)、別にPCだとなくても良い感じではあるので、mobylet.xml をクラスパス上に作って、
<?xml version="1.0" encoding="UTF-8"?> <mobylet> <initializers> <chain>org.mobylet.core.initializer.impl.MobyletInitializerImpl</chain> </initializers> <device> <basedir>device/</basedir> </device> <emoji> <basedir>emoji/</basedir> </emoji> <through> <carrier>OTHER</carrier> </through> </mobylet>
みたいな感じで、through要素でキャリアをしていすれば良い。
Mobyletを使う
Fess に Mobylet を投入してモバイルサポートを進めている。0.8.2 を使いはじめているけど、POST で送信したときのアクションが呼ばれてないみたいな気が(原因を調べないといけないけど)。Mobyletの画像変換はかなり便利だと思う。モバイルの画面表示で画像のサイズをどうするかとかを悩まずに、画面幅の 80% くらいみたいな指定でできてしまう。あとは、キャリア判定も
Mobylet mobylet = MobyletFactory.getInstance(); Carrier carrier = mobylet.getCarrier(); switch (carrier) { case DOCOMO: // ドコモだよ break; case AU: // auだよ break; case SOFTBANK: // ソフトバンクだよ break; default: // PCなど break; }
みたいにさっくり書ける。これ以外にも絵文字処理をやってくれるし。そんなわけで、Javaでのモバイルウェブアプリの敷居を下げてくれることでしょう(そうそう、MobyletってSeasarから提供されているけど別にS2なくても動く感じ)。