fc2ブログ

t100のプログラミング脱出作戦

自分のプログラミング脳をプログラムにして、いつかプログラミングから脱出してやるぞっ!とか夢見ながら、日々プログラム作っていく 百野 貴博 の日記です!今は、屋号『百蔵。』として、Silverlight・WPFを追跡中です! (2007/09/30)
WicketのDropDownChoiceで"選択してください"を変更する方法
アクセスログを見てると、"DropDownChoice Wicket"の組み合わせで
このサイトにたどり着いてる方が居られる模様。

そういえば以前、自分もそれでハマってWicketのプロパティファイルを検索する順番を調べたりしたんだった。

。。。

ぬあぁ!!
そういえば、そのときのエントリで結局、”選択してください”を変更するの書き忘れてたっ!!

というわけで、今更ですが変更方法を簡単に書きます。

※このエントリを書き終わってから以前のエントリを読み返してみると、変更方法書いてましたね・・・。
私の記憶違いでした・・・orz

でも、もったいないのでアップしよ。
⇒続きを読む ヽ(´ー`)ノ
スポンサーサイト



SpringのXMLを何とかオブジェクトで指定できないか考えてみる。
Wicketを使っていて設定ファイル系XMLから開放されつつあるんですが、DIコンテナでSpringを採用したとたんにXMLファイル増加。
他の方のブログで Google Guice という選択肢を見かけたので少し挑戦してみたのですが、トランザクション周りのAOPのさせ方が、もひとつ分からなくて断念。。。(ショボ)

DI/AOP 初心者の自分には、ドキュメントが少ない(日本語のやで)ハードルが越えられませんでした・・・orz

その点、Springであれば、ドキュメントは充実しているので多少安心です。
あとは、XMLを書かないといけないという課題が克服できさえすれば、、、出来さえすれば、、、っ!

というわけで、XMLを使わずにコンフィグを指定する方法を考えてみました。

Spring JavaConfigというのが、まさにピッタシカンカンなんですが、これまたドキュメントの壁にh(略)
⇒続きを読む ヽ(´ー`)ノ
Wicketで、リクエストがポストバックされたかどうかを知るには?
Wicketで、現在のリクエストがポストバックされたものかどうかを調べていたのですが、、、
(いわゆる、.net で言うところの isPostBack プロパティ相当の機能です)

どうもプロパティという形では無いようです。
ただ、WebPageのコンストラクタが最初のリクエストのときにのみ呼ばれているようなので、この特性が変わりに使えそうです。

WicketのWebページの処理サイクル(ラウンドロビン)は、おそらく以下じゃないかと思います。
#ちゃんと調べてなくてすみません。

1.ユーザーがページを要求します。(Http Get)
2.Wicket(Reqest Cycle)は、対象のWebPageのインスタンスを生成します。
3.レスポンスが返されます。
4.ユーザーによって、ページがサーバーにポストされます。(ポストバック)
5.Wicketは、対象のWebPageのインスタンスをセッションから検索します。
  #インスタンスが見つからない場合、期限切れ扱いとなります。
6.インスタンスが見つかった場合は、ページクラス上の各コンポーネントのイベントが呼びだされます。(onSubmit等)
7.・・・続く


#詳しい処理フローは、org.apache.wicket.request.AbstractRequestCycleProcessorのprocessEventsメソッド でデバッグすると参考になるかもしれません。



そうです。
Wicketは、セッションにページが保存されていることが前提でラウンドロビンを実行しているのです。(たぶん)


なので、処理の記述場所としては以下のようになるんじゃないかと思います。

・ページの初期化(初期表示)の情報は、WebPageのコンストラクタに記述する。
・ポストバックされた際の処理は、各コンポーネントのイベントに記述する。

うーん・・・。なるほどー。

大量ユーザーからのリクエストさばこうとしたら、メモリ不足にならないのだろうか・・・。
あと、戻るボタン対策とかどうなってるんかな・・・。

テーマ: プログラミング - ジャンル: コンピュータ

Wicketがプロパティファイルを検索する順番
※この記事で紹介した内容を、トラックバックでさらに詳しく解説頂いちゃいました!
詳しくは、こちらのリンクをご覧くださいっ!


Wicketがプロパティファイルを検索する順番 詳解@矢野勉のはてな日記


あと、自分でも「WicketのDropDownChoiceで"選択してください"を変更する方法」を別途書き直しました。

よろしければ、どうぞー。

----↓元記事、ここから----

Wicket1.3 [beta2]で、ドロップダウン(DropDownChoice)の
未選択時のデフォルト文字列「選択してください」の変更方法を調べてみました。
# Localizer.class の212行目あたりにブレークポイントつけました。

設定の変更自体は、プロパティファイルに記述することで対応できます。
仕組みは、エラーメッセージで項目名を指定する方法と同じで
プロパティファイルを使います。


ただ、使用されるプロパティファイルの名前とキー名の規約と検索の順序は、ちょっと複雑です。
今回調べてみた結果を、ざっくり以下に記述します。
(ステップ実行で確認した結果のまとめなので微妙ですが・・・)


⇒続きを読む ヽ(´ー`)ノ
wicket + guice で、今度は Callback が無いって。
さっきエントリーを書いた直後なのに、またしても謎のエラー。(ダメ)
java.lang.NoClassDefFoundError: net/sf/cglib/proxy/Callback

どうも、google guice は、cglib というライブラリに依存する部分があるらしい。
(Injection関連?)

JavaDocみたら、確かにそうなってる
http://jsourcery.com/api/google/guice/1.0/com/google/inject/InterceptorStackCallback.html

ていうか、JavaDocにソースコードへのリンクが付いてるっ?!
どうもJavaDoc1.4で増えていたらしい・・・知らんかった・・・
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/tooldocs/javadoc/whatsnew-1.4.html

てかJavaDocにもバージョンがあったのか・・・


で、cglib ですが、sourcefogeからダウンロードできました。
http://sourceforge.net/project/showfiles.php?group_id=56933

自分は、ここの cglib-nodep-2.1_3.jar というのをダウンロード。



ていうか、さっきのエントリの内容も含めて、こちらのブログで解説されてました!
ぐはー
http://blog.2dpa.net/2007/08/wicketguice.html