永瀬 泰一郎
t.nag****@gxp*****
2010年 10月 7日 (木) 15:59:08 JST
自称Wicket/JPA/Guice職人のナガセヤスヒトです。 ガラケー向きのシステムをwicketでいくつか書いた事があるので、ガラケーで wicketを使う際の注意点いくつか。 ■auのチェックボックスに注意 auの端末はcheckboxのvalueを設定しないと、チェックをしてもしなくてもfalse になります。 なぜかと言うとデフォルトでvalue="0"になってしまうんで す。(Boolean.parseBoolean("0")はfalse) http://d.hatena.ne.jp/m_norii/20080704/1215183224 なのでデフォルトでチェックボックスのvalueを"on"にする IComponentInstantiationListenerを書きましょ う。 public class CheckBoxValueModifier implements IComponentInstantiationListener { @Override public void onInstantiation(Component component) { if (component instanceof CheckBox) { component.add(new SimpleAttributeModifier("value", "on")); } } } こんな感じ。書いたらApplication.init()内で this.addComponentInstantiationListener(new CheckBoxValueModifier()); のように書いてアプリケーションに登録します。 ■文字列の実体参照に注意 wicketはoptionタグの内容を実体参照に変換します。 一部の端末(DoCoMoだったかな?)は実体参照を解決できないので、変換しないよ うにしましょう。 public class EscapeModelStringsModifier implements IComponentInstantiationListener { @Override public void onInstantiation(Component component) { component.setEscapeModelStrings(false); } } こんな感じ。 主には携帯を使う上での注意点はこんなところでしょうか。思い出したらまた書 きます。 ちなみに文字コードはutf-8で書いておけばよほど古い端末で無い限り動く(曖 昧・・・)のでフィルターとか用意しないでもwicketがよろ しくやってくれます。 またwicketにはstyleという概念があって、リソースを切り替える(ex. index.html/index_mobile.htmlとか。この場合 Session.get().setStyle("mobile"))ことがで きます。 つまり、携帯用とPC用にhtmlを用意しておけばjavaのソースは1つでいいので管 理が楽ちんです。今回の要件にはないのかもしれませんが、 テストに関してはWicketTesterという仕組みがありますが、個人的には wicket:idとかを手作業で打ってったりするのが面倒なの で自分は使ってませ ん。シミュレーターをSeleniumでテストしてます。 認証周りはwicket-auth-rolesを使えばアノテーションで切り分けできるので楽 ですよー。 @AuthorizeInstantiation( { "ADMINISTRATOR", "MANAGER", "USER" }) @AuthorizeAction(action = "RENDER", deny = { "TRIAL" }) public class IndexPage extends WebPage { } みたいな。 取り急ぎぽぽぽと思いついたあたりを書いてみました。 それではー。