- PR -

strutsでjava.sql.Date型のnull値を扱う術

1
投稿者投稿内容
夕月夜
会議室デビュー日: 2005/10/28
投稿数: 7
投稿日時: 2006-02-22 12:57
struts1.2.8を使っています。

ActionFormのpropertyに使えるdata型として、
java.sql.Dateが含まれていますが、
Date値がnullだと、submit時にstrutsが行う
ActionFormへの値のset処理が、
org.apache.commons.beanutils.ConversionException
で落ちてしまいます。
(jsp側はhiddenでvalue="")

随分と不便な仕様というか、中途半端な挙動というか、
そんな感じがするのですが、
java.sql.Dateのnull値を扱う場合のコツみたいなのは
あるのでしょうか。

今は、javascriptで、java.sal.Dateに書き戻される
hidden値が空白だったら、hiddenをdisabledさせて対処
していますが、何か根本で間違っている不安をおぼえ
質問いたしました。

アドバイス(或いは同感とかでも)よろしくお願いします。
でゅうく
大ベテラン
会議室デビュー日: 2003/11/30
投稿数: 129
投稿日時: 2006-02-23 21:07
beanutils のコンバータをデフォルト値ありで生成し、再登録しては如何でしょうか?

サーブレットの init() メソッドあたりで以下のコードを実行すればデフォルト値が null になります。
#多分・・・

コード:

ConvertUtils.register(new SqlDateConverter(null), java.sql.Date.class);



初期化用のサーブレットのみで実行すればいいです。
ただし、ActionServlet よりも後にロードされるように web.xml の load-on-startup を調整してください。

[ メッセージ編集済み 編集者: でゅうく 編集日時 2006-02-23 21:23 ]
夕月夜
会議室デビュー日: 2005/10/28
投稿数: 7
投稿日時: 2006-02-24 20:25
でゅうくさん、返信ありがとうございます。

こんな手段があったのですね。
視点の違う貴重なアドバイスをいただき感謝です。

試しての結果報告にはまだ至りませんが、とりあえずお礼まで。
1

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