Wicketで携帯Webアプリを作る際の注意点
前回の続き。
画面が少しずつできてきたので携帯からアクセスして見た。すると何故かドロップダウンのラベルが表示されてない。数字のところはでてるのに日本語のところがでてない。PCからだと表示されているが、携帯からだと表示されない。。。「Docomoの嫌がらせか?」と思い、早速調べてみると
http://www.eisbahn.jp/yoichiro/2007/01/wicket_4.html
こんなようなことになってるらしい。。。
出力されたソースを見てみるとたしかに日本語の部分が数値参照になっている。携帯では数値参照の部分を解釈してくれないらしく、何も表示されてなかったんだね。。。
どうやらWicketを修正してビルドしなおすと解決するらしい。めんどいなぁと思いつつソースを追っているとこんな部分を発見。
AbstractChoise.java(416行目あたり)
if (getEscapeModelStrings()) { escaped = escapeOptionHtml(display); } buffer.append(escaped); ...
ん?なにやら分岐してるじゃないか?getEscapeModelStringsを追い求めてソースを追うこと5クラス目。あったあったComponent#setEscapeModelStrings((final boolean escapeMarkup)メソッドが!!
というわけで試してみる。
DropDownChoice<SexType> sex = new DropDownChoice<SexType>("sexType", Arrays.asList(SexType.MAN,SexType.WOMAN), new ChoiceRenderer<SexType>("label","code")); sex.setEscapeModelStrings(false);
ちなみにSexTypeはenumです。こんなふうにもできるWicketすばらしい。
で、実行結果。。
まずはPCで出力ソースを見てみる。うん。数値参照になってない。そして携帯でアクセス。うん。ちゃんと表示されてる。
こことはやりかた違ったけど俺が使ってるのは1.4rc1(知らない間にでてたのでm3からrc1にした)なので改良されたっぽい。。。
このブログにWicketの人に報告するよ〜って書いてあったので報告して改良されたのかな?すばらしいことです。大変参考になりました。
ともかく携帯で数値参照問題も解決&さらにWicket詳しくなれた。
以上。