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

自分のプログラミング脳をプログラムにして、いつかプログラミングから脱出してやるぞっ!とか夢見ながら、日々プログラム作っていく 百野 貴博 の日記です!今は、屋号『百蔵。』として、Silverlight・WPFを追跡中です! (2007/09/30)
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
【--/--/-- --:--】 | スポンサー広告 | トラックバック(-) | コメント(-) top↑
WicketのDropDownChoiceで"選択してください"を変更する方法
アクセスログを見てると、"DropDownChoice Wicket"の組み合わせで
このサイトにたどり着いてる方が居られる模様。

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

。。。

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

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

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

でも、もったいないのでアップしよ。
■キーは”null ”

WicketのDropDownChoiceで未選択の項目のキーには、"null" という文字列が使われます。

なので、properties ファイルに、

null=うちの店は未選択お断りやで!



と書いておくと、DropDownChoiceの未選択項目に、"うちの店は未選択お断りやで!"と表示されます。

試しにページのproperties ファイルに記述して確認してみてください。
ページに対応するpropertiesファイルは、ページ名と同じ名前をつけてPageクラスと同じディレクトリに置くことになっています。
例えば、HomePage というページを作っているとしたら、java, html, properties は、以下のようになります。

HomePage.java
HomePage.html
HomePage.properties

※Eclipseでpropertiesファイルに日本語を書く場合はプラグインを使うと便利ですよ。

■DropDownChoice ごとに指定することも出来る。

画面上のDropDownChoiceごとに、未選択の文字列を変更することも出来ます。
nullの前にDropDownChoiceの wicket:id を書くことで指定します。

例えば、以下のようなhtmlの場合

<body>
メケホームページ!
<form wicket:id="form">
<select wicket:id="dropDown1" ><option>めけ1!</option></select>
<select wicket:id="dropDown2" ><option>めけ2!</option></select>
</form>
</body>

properties ファイルに、以下の記述を追加することで dropDown1 の未選択文字列のみ変更できます。

form.dropDown1.null=空めけですよ。




■アプリケーション全体に対して指定することも出来る。

上記までの例では、未選択文字列を指定するのにDropDownChoiceを持つページ全てにpropertiesファイルを用意しないといけなくなります。
アプリケーション全体に対して値を指定するには、WebApplicationクラスのpropertiesファイルを使います。

propertiesファイルは、作成したWebApplicationと同じフォルダに、同名のpropertiesファイルを作成します。
理屈は、先ほどのページクラスの時と同じです。

例えば、MekeApplication.java を作った場合、同じフォルダに MekeApplication.propertise を作成します。
そして、以下のように記述します。

null=空ですやん。



これで、アプリケーション内で使われている全てのDropDownChoice の未選択文字列が変わります。


■うまいことスコープを制御する。

Wicketは、「Wicketがプロパティファイルを検索する順番」のエントリーで書いたように、
定数に対応する表示文字列を取得するロジックが結構複雑です。

ですが仕組みが分かってしまえば、柔軟に値を制御することが出来るようになります。
基本的には、アプリケーション単位、ページ単位、コンポーネント単位 が使えれば不自由ないと思うのですが
それ以外のパターンも見ておくと良いかもしれません。
(ワシは見てませんが・・・)

■「選んでください」という文字列は、Application_ja.properties で指定されている。

wicket-1.3.0-rc1.jar の中を覗いてみると、org.apache.wicket パッケージの下にApplication.properties というファイルが、いろんな言語用に用意されています。

この中の、Application_ja.properties を見ると、確かに

null=選んでください


という記述があることが分かります。

初期値は、これが使われてたんですねー。

他にも、入力チェックに関するエラーメッセージ等、様々なものが指定されています。
このファイルを見ると、システムの既定のメッセージを変更するヒントになるかもしれないですね。


■ちなみに、null というキーは、AbstractSingleSelectChoice クラスの中で指定されています。

未選択文字列にnullが使われるというのは、実は AbstractSingleSelectChoice のソースの中に書かれています。
#DropDownChoice の親クラスです。

でも、Application.properties ファイルに決めうちで書いてあるくらいだから、「未選択はnullというキーで検索する」という対応付けは、DropDownChoiceに限らないルールなのかも。














管理者にだけ表示を許可する


トラックバックURL:
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。