[Seasar-user:5598] Re: [S2Struts] プリミティブ等のプロパティを含むDTOの検証の動作について

Katsuhiko Nagashima [E-MAIL ADDRESS DELETED]
2006年 12月 22日 (金) 22:33:43 JST


永島です。

> この機能は、画面からの入力値を検証する以外のための機能なのでしょうか?
> それとも、DTOの各プロパティに値を入れる前に検証を行うための設定などがあるの
> でしょうか?

現在、DTOの各プロパティに値を入れる前に検証を行う機能は提供しておりません。
一時提供する予定(していた)でしたが、少し問題があったので廃止しました。
ですので、ご指摘の通り型検証の自動付加は有効に利用することはできないかもしれません。。。

以上です。

06/12/21 に Nishiwaki Kiyoyuki<[E-MAIL ADDRESS DELETED]> さんは書きました:
> 西腋と申します。
> 立続けで申し訳ありません。
>
> S2Struts 1.2.7 を使用して入力値の検証(strutsとcommons-validatorで)を行って
> いるのですが
> DTOに以下のプリミティブ・クラスのプロパティが宣言されていると
> 自動的にそれぞれのプロパティに検証(validator-rules.xml に宣言されているbyte
> 等々)が付加されます。
> byte、double、float、int、long、short
> Byte、Double、Float、Integer、Long、Short
> java.util.Date、java.sql.Timestamp
>
> ソースを見ますと、
> org.seasar.struts.validator.factory.AbstractValidatorAnnotationHandler#getAu
> toTypeValidatorName(PropertyDesc)
> にて、特定のプリミティブとクラスに対して、特定の検証(validator-rules.xml に
> 宣言されている検証パターン)を付加しており、
> DTOが検証対象になっている場合、上記のプリミティブ・クラスのプロパティにも自
> 動的に検証が行われています。
>
> ここで、一つ確認させていただきたいのですが、
> 実際に検証を行う org.apache.struts.validator.FieldChecks のメソッドが実行さ
> れる際には
> 第一引数にわたってくるDTO(S2Strutsの場合、SerializeBeanValidatorFormでラッ
> プされているようですが)には
> すで値が設定されているため、上記のプリミティブ・クラスのプロパティに対しても
> 値がすでに格納されています。
> この際、画面で入力された文字列が各プリミティブ・クラスに変換できない場合、デ
> フォルト値での初期化や、例外の発生となるため
> 自動的に付加されている検証が有意義に使用できません。
>
> この機能は、画面からの入力値を検証する以外のための機能なのでしょうか?
> それとも、DTOの各プロパティに値を入れる前に検証を行うための設定などがあるの
> でしょうか?
>
> よろしくお願いいたします。
>
>
> 添付していますプロジェクトは
> DTOにStringとbyteのプロパティがあり、
> Stringのプロパティには、アノテーションでbyteの検証、
> byteのプロパティには、上記の機能で検証がかかるようになっているサンプルです。
> S2Struts 1.2.7 の配布パッケージのJARを追加したら動くと思います。
>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>
>
>


-- 
Katsuhiko Nagashima



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