[seasar-dotnet:784] Re: DTOの入力値検証について

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2008年 3月 4日 (火) 09:51:38 JST


お世話になっております。藤井と申します。

タマダ様、返信ありがとうございました。

まだ、理解できていませんが、ぜひ、参考にさせて頂きます。





Masayuki TAMADA <[E-MAIL ADDRESS DELETED]> 
送信者: [E-MAIL ADDRESS DELETED]
2008/03/04 00:11
[E-MAIL ADDRESS DELETED] へ
返信してください


宛先
[E-MAIL ADDRESS DELETED]
cc

件名
[seasar-dotnet:783] Re: DTOの入力値検証について





タマダです。

ボクは以下の様に実装することで、AOPでジョインポイントに対し、
検証用のbeforeアドバイスを利用して引数のDTOを検証する様にしています。

1. DTOのプロパティ毎の検証は、検証用の汎用属性クラスを作成し、
各プロパティに仕掛ける様にしています。

2. また、DTOクラス内のプロパティ間の検証については、DTOクラスと共に
インナークラスとして、クラス検証用の検証クラスを作成してDTOクラスに
仕掛ける様にしています。

イメージだけで申し訳ないですが、以下の様な感じになります。


[PersonDtoValidator]
public class PersonDto {
<snip>

[IntRangeValidator(0, 120)]
public int Age
{
<snip>
}

[NotNullValidator]
[StringLengthValidator(10, 70)]
public string Name
{
<snip>
}


}

class PersonDtoValidatorAttribute : Attribute {

public void DoValidate(object target) {

PersonDto dto = target as PersonDto;
if ( dto == null)
{
throw new ArgumentException();
}

ここにプロパティ間の検証内容を実装します。
}
}


あとは、検証発火用のinterceptorと.diconファイルの作成のみでOKです。

# どの様な順番で検証するか等は各仕様があるかと思いますので、ここでは
# 記述しません。

結局DTOの変更が行われる場合、プロパティの検証に関しても、プロパティ間の
検証に関しても変更は行われるものだと思います。
汎用の属性クラスやインナークラスを利用することで、該当のDTOクラスの
ファイルのみ変更する事で修正完了ですし、見通しが良いものになるかと。


参考になれば。



On Mon, 3 Mar 2008 20:02:50 +0900
[E-MAIL ADDRESS DELETED] wrote:

# お世話になっております。藤井と申します。
#
# 最近、S2.NETを勉強し始めたばかりです。
#
# S2.NETとは直接、関係ない質問になると思いますが、
# DTOへの入力値検証について、皆様はどのように実装されていますでしょうか?
#
# DTOへVaridateメソッド等を組み込むと、DTOでなくなるように思いますし、
# Varidateクラスを作成したとしても、DTOが変更になれば、変更する必要がある
と
# 思います。
#
# DTOの属性等で何かできないものかと考えていますが、なにぶん、
# 初心者なもので、なかなかできません。
#
# 一般的なDTOへの入力値検証方法をアドバイス頂ければ幸いです。
#
# 以上、宜しくお願いいたします。
# _______________________________________________
# seasar-dotnet mailing list
# [E-MAIL ADDRESS DELETED]
# https://ml.seasar.org/mailman/listinfo/seasar-dotnet


_______________________________________________
seasar-dotnet mailing list
[E-MAIL ADDRESS DELETED]
https://ml.seasar.org/mailman/listinfo/seasar-dotnet



seasar-dotnet メーリングリストの案内