mobyletサイトがリニューアルされている

携帯用フレームワークの mobylet ですが、サイトが商用製品のような勢いでリニューアルされている。サイトのデザインももちろんのことだが、mobylet の説明についても情報が増えている。今まで、知る人ぞ知る部分だった mobylet.xml についても説明がある。これで、ますます利用しやすくなりますねー。

リクエストエンコーディングの設定

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要素でキャリアをしていすれば良い。