- PR -

カレンダーのリストボックス

1
投稿者投稿内容
とら
会議室デビュー日: 2005/09/13
投稿数: 7
投稿日時: 2007-01-25 22:42
お世話になっております。

struts1.1を使用したwebアプリケーション開発をしています。
入力フォームがいくつかある入力画面で、月・日を別々にリストボックスで出そうとしています。単純に1〜12、1〜31を出力するだけなのですが、何かスマートな方法はないでしょうか?
これまでは、入力画面に遷移する際のActionクラス等で、ループでぐるぐる回して作成した月のListと日のListをFormBeanにセットし、入力画面のjspでstrutsのカスタムタグを使用して出力していたのですが、なんだかバカらしい気がしていました。
ものすごく基本的なことなのかもしれませんがよろしくお願いします。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-01-25 23:14
どのみちサーバ側でありえない日付が送信されたときのチェックは必要なので、
私の場合は単純に1〜12、1〜31を出力するだけにしています。

2/31が選択されたらエラーでいいじゃん。ってポリシーですね。
サーバサイドで必ず検証するという前提のもとですが。

お客さんには当然、そういう仕様であると説明はしますけどね。
絶対にありえない日付の選択が出来ないようにする代わりに、
それなりのコストがかかるというのも説明します。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-01-25 23:46
完全に View でしか必要のない情報ですからbeanとして積んでおかなくてもjsp内なりJavaScript内なりでループするだけで良いかもしれませんね。

>2/31が選択されたらエラーでいいじゃん。ってポリシーですね。
java.util.Calender#setLenient(true) で3月3日と認識させることも可能です。
確認画面を伴う場合などは有効かもしれません。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-01-25 23:59
>インギさん
多分一般の利用者は2/31が3/3になるとは思いにくいかもしれませんね。
どんなUIが便利なんでしょうね。この辺は永遠のテーマです。。。

>とらさん
あと、ありえない末日が選択されたら、
強制的にその月の月末とするUIを実装したこともあります。

正解が存在しない世界なので、参考程度に留めておくのがいいかと思います。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-01-26 00:15
>多分一般の利用者は2/31が3/3になるとは思いにくいかもしれませんね。
そうですね。内部で日付を+1したい、とか言う場合には便利ですが人間とのインターフェースではJavaScript などで適切に制御したほうがいいですね。
まぁ、一番手抜きをする方法ってことで。
とら
会議室デビュー日: 2005/09/13
投稿数: 7
投稿日時: 2007-01-26 08:45
viewでしか使用しないので、jspで単純に1〜12、1〜31を出力して、ありえない日付のチェックはサーバー側で行おうと思います。
みなさんありがとうございました。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2007-01-26 10:21
28/29/30/31日分のリストを用意(4つ)して、JavaScriptで表示非表示を出し分けるというのもできますが、
JavaScriptが有効でないと使えないし、私も特に要求がない限りは

>2/31が選択されたらエラーでいいじゃん。

にしてます。

そのものずばりな「カレンダー」をテーブルで出して、クリックで選ばせるのも、面倒くさいけどありますね。
これは根本的なUI変更ですが。
1

スキルアップ/キャリアアップ(JOB@IT)