Struts のフォームと入力バリデーション、型変換

上のエントリで、長々と DynaActionForm と LazyDynaBean について記述しているのは、そもそも Struts のフォーム周りの動作が気に入らないからだったりします。
Struts はユーザの入力をフォームに格納しバリデーションを行なう場合、まずユーザの入力値をフォームに格納してから、フォームのオブジェクトに対してバリデーションを実行します。

そのため、バリデーションによって、型変換に失敗するような値が入力されたことを検査したい場合、フォームのプロパティ型として、型変換後の型を指定することは出来ません。そのような場合、フォームのプロパティ型として、java.lang.String を指定することになると思います。その上で、バリデーションを実行し、実際に欲しい型への変換はアクション内やフォーム内で行なったりすることになると思います。
せっかくフレームワークを使用しているのに、ドメイン型への変換を自前で行なうことに激しく疑問を感じてしまいます。

そこで、ドメイン型のフォームと、すべての項目が文字列の、バリデーション処理用のフォームを用意し、バリデーション処理が成功したらドメイン型フォームへの変換を行なうという方法を考えました。
二つのフォーム定義を実装者に書かせるの( ゜Д゜)マンドクセーだとおもうので、ドメイン型のフォームから、バリデーション処理用のフォームは生成できるようなことを考えています。その場合に、上述の LazyDynaBean を使用したプロパティ定義が必要になったりします。