Wicketで複数選択のチェックボックス(2)
前回の続き。
前回、複数選択のチェックボックスを実装したんだけど、携帯でアクセスしてみるとラベルの文字が化ける。「ははぁん。また数値参照の問題だな!」と思い、ドロップダウンでやったときと同じようにやってみた。
final CheckBoxMultipleChoice<User> userList = new CheckBoxMultipleChoice<User>("sendTo", users, new ChoiceRenderer<User>("userName","userId")); userList.setEscapeModelStrings(false);
これでいけるはずと思い、再び携帯でアクセス。。。。ダメだ!!!
そこでソースを追ってみるとorg.apache.wicket.markup.html.form.CheckBoxMultipleChoiceクラスにこんなメソッドが。。。
/** * Overridable method to determine whether the label markup should be escaped. * * @return true if label markup should be escaped */ protected boolean isEscapeLabelMarkup() { return true; }
なるほど。数値参照でエスケープしたくなかったらこいつをオーバーライドしなさいってことね?
てかsetEscapeModelStrings(false);じゃだめなのは何故?ww
まぁ深くはつっこまずにやってみる
final CheckBoxMultipleChoice<User> userList = new CheckBoxMultipleChoice<User>("sendTo", users, new ChoiceRenderer<User>("userName","userId")){ @Override protected boolean isEscapeLabelMarkup(){ return false; } };
これでどうだ!!携帯でアクセスしてみる。。。。。できた。。。
こんなところにも数値参照の罠があった。携帯サイトを作るときは注意しましょう。
っていうか携帯のブラウザが数値参照をちゃんと変換してくれればいいんだ。。。
あとDocomoの独自仕様はへこむ。。。DocomoがIEに思えてきた今日この頃。。
以上