[Seasar-user:15821] Re: 【Ymir】Date型のプロパティの利用にあたり

YOKOTA Takehiko [E-MAIL ADDRESS DELETED]
2008年 9月 24日 (水) 12:34:31 JST


横田です。

Ymirをご利用いただきありがとうございます。

[E-MAIL ADDRESS DELETED] さんは書きました:

> Pageクラスにjava.util.Date型のプロパティを用意させていただき、
> HTML画面から、Date型を利用する際のデフォルトフォーマットの、
> yyyy-MM-dd HH:mm:ssの形式で入力さえていただき、POSTさせていただきました。
> 
> しかし、下記のエラーが発生してしまい、プロパティに値がセットされませんでした。
(略)

こちらで検証してみたのですが、残念ながら現象は再現しませんでした。

ただ、型変換をつかさどるTypeConversionManagerコンポーネントを差し替えると
現象が再現できました。

結論から申しますと、src/main/resources/ymir-component+typeConversionManager.dicon
というファイルを削除してしまっていませんでしょうか?確認してみていただけ
ますでしょうか。

以下、詳細です。

通常Ymirのスケルトンプロジェクトでは、TypeConversionManagerとして
YmirTypeConversionManagerを使うようになっています。この設定はアプリケーション
プロジェクトの src/main/resources/ymir-component+typeConversionManager.dicon
に書かれています。この設定ファイルを削除してしまった場合などは、
BeanUtilsTypeConversionManagerというクラスが使われます。

BeanUtilsTypeConversionManagerはApache Commons BeanUtilsの型変換機構を
そのまま使いますので、Date型の変換をサポートしていません。(Date型の変換
はYmirTypeConversionManagerで独自にサポートしています。)

ところでBeanUtilsの型変換機構は、サポートしていない型のオブジェクトへの変換
要求に対してなぜかStringを返してきます。このため、"yyyy-MM-dd HH:mm:ss"形式
の文字列をDate型に変換すると、そのままのStringが返されてきます。

このためsetterにセットするところでIllegalArgumentExceptionが発生します。

以上よろしくお願いいたします。

-- 
YOKOTA Takehiko
  [E-MAIL ADDRESS DELETED]


Seasar-user メーリングリストの案内