Tsutomu Yano
t_yano****@me*****
2009年 6月 28日 (日) 03:46:03 JST
矢野です。 なるほどオペレータさんってキーでの操作がめちゃくちゃ速いですからね... で自分の作ったクラスとかをざっと見てみたのですが、どうも私の場合は、 ・ユーザからの入力変換を伴う場合は覚えてる限り間違いなくConverterを使う。 ・Converterを使う場合にはほぼ必ずコンポーネントも作る (全アプリで共通の変換であれば、Applicationで設定しますが) どうも、入力値の変換はIConverterの仕事だろう常識的に考えて、というのが私のなかに あるようです。。。 ・Labelでは横着することがあって、匿名クラスでさくっと終わるような話の場合は、 AbstractReadOnlyModelの匿名サブクラスを作ってすませてしまう。 ・結局Labelでも、例えばTimestampを2009/06/26 10:00:00で表示するラベル、 みたいなのは、IConverter実装を作ってますね。 というところです。 Labelの場合は「とってくる」って動作だけで済むので、AbstractReadOnlyModelで 済ませてしまうことも結構あります。 というのは、Labelを匿名サブクラス化する方法だと、さらにそのあと、IConverterの 匿名サブクラスもつくらなくちゃいけなくなって、なんだか変な感じがするから...です かねえ。そこまでやるなら、ちゃんと別ファイルでサブクラス作るわい、みたいな。 なので、何度も使うようなものについては、やっぱりLabelのサブクラスを作ってました。 一回だけサクっと書きたい、というときにAbstractReadOnlyModelでやっちゃってるって ところのようです、自分のコードみたかぎりでは。 ただ、Wicketの考え方的には ・値の変換→IConverter ・変換後の値をどこかに格納/値をどこかから取り出す→Model なので、やはりIConverterを使うのがふさわしいように思いました。 というわけなので、 > > 矢野様としては、使い分けを > > LabelならAbstractReadOnlyを使う > 入力が存在するならIConverterを使う > > で、統一しているということですか? 統一している訳じゃなく、Labelはけっこうグダグダな使い方をしている、 「入力が存在するならIConverterを使う」という点はわりと徹底している、という感じでした。 それでは。 On 2009/06/27, at 12:26, 古川 烈 wrote: > 古川です、 > アドバイスありがとうございます。 > > 正に下記で示された状態です。 > >それはTextFieldではなくてLabelのような気がしたんですよね。 > > ここも迷いのある部分で、 > > AbstractReadOnlyModel > IConverter > > どちらを使うべきなのか?という疑問も持っています。 > 自分の中では > > Model -> 何処からか値を引きずり出すオブジェクト > Converter -> 引きずり出された値を表示上の文字列に変換するオブジェクト > > なんですが、 > 「true,false」を「はい、いいえ」と表示するとして、 > それがたまたま入力が不可能なLabelであったというだけの話で、 > 本来何かのオブジェクトを表示上の文字列に変換するものはConverterであるべきではないのか? > と思ってしまうのです。 > (じゃあReadOnlyModelをどこで使う?と聞かれると答えれないですけど。。。) > > 矢野様としては、使い分けを > > LabelならAbstractReadOnlyを使う > 入力が存在するならIConverterを使う > > で、統一しているということですか? > > > 日付の例に関しては下記の例の様にしています。 > CRM等のシステムの場合、オペレータの操作が慣れてくると、 > 「テンキーで高速入力したい」要件が出てきて、結局ドロップダウンが煩わしくなってくると思うので。 --------------------------------------------------- 矢野 勉(やの つとむ) 電子メール: t_yano****@me***** ---------------------------------------------------