Download
Magazine
Develop
Account
Download
Magazine
Develop
Login
Forgot Account/Password
Create Account
Language
Help
Language
Help
×
Login
Login Name
Password
×
Forgot Account/Password
Category:
Software
People
PersonalForge
Magazine
Wiki
Search
OSDN
>
Find Software
>
System
>
TERASOLUNA Framework
>
Forums
>
Open Discussion
>
TERASOLUNA ServerFW.NET(WEB版)のバリデータについて
TERASOLUNA Framework
Description
Project Summary
Developer Dashboard
Web Page
Developers
Image Gallery
List of RSS Feeds
Activity
Statistics
History
Downloads
List of Releases
Stats
Source Code
Code Repository list
Subversion
View Repository
Ticket
Ticket List
Milestone List
Type List
Component List
List of frequently used tickets/RSS
Submit New Ticket
Documents
Wiki
FrontPage
Title index
Recent changes
Doc Mgr
List Docs
Communication
Forums
List of Forums
Open Discussion (1277)
Mailing Lists
list of ML
terasoluna-information
News
Forums:
Open Discussion
(Thread #19739)
Return to Thread list
RSS
TERASOLUNA ServerFW.NET(WEB版)のバリデータについて (2008-08-28 15:08 by
Anonymous
#38539)
Reply
Create ticket
ASP.NETのCustomValidatorコントロールのイベントハンドラ内で、StringLengthRangeValidatorを使った文字列長チェックを行おうとしているのですがうまくいかないので、以下のようなコードでテストしたところ、すべてIsValidがfalseになりました。
----------------------------
ValidationResults result;
string errorMessage;
string[] testValueArray;
int maxLength;
int minLength;
minLength = 5;
maxLength = 20;
StringLengthRangeValidator stringLengthRangeValidator = new StringLengthRangeValidator(minLength, RangeBoundaryType.Inclusive, maxLength, RangeBoundaryType.Inclusive, null, false);
errorMessage = stringLengthRangeValidator.MessageTemplate;
testValueArray = new string[] { "000", "12345", "ABCDEFG890", "00000000001111111111++", "1234567890", "12345678901234567890123"};
foreach (string testValue in testValueArray)
{
result = stringLengthRangeValidator.Validate(testValue);
if (!result.IsValid)
{
// "{2}" には {3} 文字未満または {5} 文字より大きい文字列を入力してください。
_log.Debug(string.Format(errorMessage, null, null, "この値" + testValue,minLength,null,maxLength));
}
else
{
_log.Debug(testValue + "はバリデーションはOKです");
}
}
【ログ】
"この値000" には 5 文字以上 20 文字以下の文字列を入力してください。
"この値12345" には 5 文字以上 20 文字以下の文字列を入力してください。
"この値ABCDEFG890" には 5 文字以上 20 文字以下の文字列を入力してください。
"この値00000000001111111111++" には 5 文字以上 20 文字以下の文字列を入力してください。
"この値1234567890" には 5 文字以上 20 文字以下の文字列を入力してください。
"この値12345678901234567890123" には 5 文字以上 20 文字以下の文字列を入力してください。
ByteRangeValidatorでも同様になってしまいます。
他のフレームワークから提供されているバリデータもざっくりテストしてみましたが
思ったとうりの結果が得られていますので、使い方に大きな勘違いをしているのではないと思っているのですが。
ご教授をお願いできないでしょうか。
Reply to #38539
×
Subject
Body
Reply To Message #38539 > ASP.NETのCustomValidatorコントロールのイベントハンドラ内で、StringLengthRangeValidatorを使った文字列長チェックを行おうとしているのですがうまくいかないので、以下のようなコードでテストしたところ、すべてIsValidがfalseになりました。 > ---------------------------- > ValidationResults result; > string errorMessage; > string[] testValueArray; > int maxLength; > int minLength; > > minLength = 5; > maxLength = 20; > > StringLengthRangeValidator stringLengthRangeValidator = new StringLengthRangeValidator(minLength, RangeBoundaryType.Inclusive, maxLength, RangeBoundaryType.Inclusive, null, false); > > errorMessage = stringLengthRangeValidator.MessageTemplate; > > testValueArray = new string[] { "000", "12345", "ABCDEFG890", "00000000001111111111++", "1234567890", "12345678901234567890123"}; > > foreach (string testValue in testValueArray) > { > result = stringLengthRangeValidator.Validate(testValue); > if (!result.IsValid) > { > // "{2}" には {3} 文字未満または {5} 文字より大きい文字列を入力してください。 > _log.Debug(string.Format(errorMessage, null, null, "この値" + testValue,minLength,null,maxLength)); > } > else > { > _log.Debug(testValue + "はバリデーションはOKです"); > } > } > 【ログ】 > "この値000" には 5 文字以上 20 文字以下の文字列を入力してください。 > "この値12345" には 5 文字以上 20 文字以下の文字列を入力してください。 > "この値ABCDEFG890" には 5 文字以上 20 文字以下の文字列を入力してください。 > "この値00000000001111111111++" には 5 文字以上 20 文字以下の文字列を入力してください。 > "この値1234567890" には 5 文字以上 20 文字以下の文字列を入力してください。 > "この値12345678901234567890123" には 5 文字以上 20 文字以下の文字列を入力してください。 > > ByteRangeValidatorでも同様になってしまいます。 > 他のフレームワークから提供されているバリデータもざっくりテストしてみましたが > 思ったとうりの結果が得られていますので、使い方に大きな勘違いをしているのではないと思っているのですが。 > ご教授をお願いできないでしょうか。
You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.)
Login
Nickname
Preview
Post
Cancel
RE: TERASOLUNA ServerFW.NET(WEB版)のバリデータについて (2008-08-29 12:18 by
Anonymous
#38572)
Reply
Create ticket
投稿者です。
誤解を招く表現があったので訂正します。
(誤)他のフレームワークから提供されているバリデータもざっくりテストしてみましたが
(正)他の、フレームワークから提供されているバリデータもざっくりテストしてみましたが
Reply to
#38539
Reply to #38572
×
Subject
Body
Reply To Message #38572 > 投稿者です。 > 誤解を招く表現があったので訂正します。 > (誤)他のフレームワークから提供されているバリデータもざっくりテストしてみましたが > (正)他の、フレームワークから提供されているバリデータもざっくりテストしてみましたが
You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.)
Login
Nickname
Preview
Post
Cancel
RE: TERASOLUNA ServerFW.NET(WEB版)のバリデータについて (2008-09-01 10:48 by
tatsumihr
#38610)
Reply
Create ticket
StringLengthRangeValidatorのインスタンスを生成したときにStringLengthRangeValidator型で受けているようですが、Microsoft.Practices.EnterpriseLibrary.Validation.Validator型で受けてください。
◆実装例
--------------------
Microsoft.Practices.EnterpriseLibrary.Validation.Validator validator = new StringLengthRangeValidator(minLength, RangeBoundaryType.Inclusive, maxLength, RangeBoundaryType.Inclusive, null, false);
ValidationResults vabResults = validator.Validate(testValue);
--------------------
元々はデータセットに対する検証をかけることを目的としているため、このような仕様になっています。
Microsoft.Practices.EnterpriseLibrary.Validation.Validator型で受けて、再度ご確認ください。
Reply to
#38539
Reply to #38610
×
Subject
Body
Reply To Message #38610 > StringLengthRangeValidatorのインスタンスを生成したときにStringLengthRangeValidator型で受けているようですが、Microsoft.Practices.EnterpriseLibrary.Validation.Validator型で受けてください。 > > ◆実装例 > -------------------- > Microsoft.Practices.EnterpriseLibrary.Validation.Validator validator = new StringLengthRangeValidator(minLength, RangeBoundaryType.Inclusive, maxLength, RangeBoundaryType.Inclusive, null, false); > > ValidationResults vabResults = validator.Validate(testValue); > -------------------- > > 元々はデータセットに対する検証をかけることを目的としているため、このような仕様になっています。 > Microsoft.Practices.EnterpriseLibrary.Validation.Validator型で受けて、再度ご確認ください。
You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.)
Login
Nickname
Preview
Post
Cancel
RE: TERASOLUNA ServerFW.NET(WEB版)のバリデータについて (2008-09-01 11:34 by
tatsumihr
#38613)
Reply
Create ticket
追記です。
StringLengthRangeValidator は、Object型に対しても入力値検証をかけられるようにしたいという設計時の思想がありました。
したがって、内部的には DoValidate(object objectToValidate, object currentTarget, string key, ValidationResults validationResults) メソッドをオーバーライドして、
objectToValidate.ToString().Length で文字列長を取得しています。
今回の件では、StringLengthRangeValidator.Validate メソッドの引数に、String型を指定しています。
String型を指定すると、StringLengthRangeValidator の
DoValidate(object objectToValidate, object currentTarget, string key, ValidationResults validationResults) メソッドではなく、
親クラス TypeRangeValidator の DoValidate(IComparable objectToValidate, object currentTarget, string key, ValidationResults validationResults) メソッドが直接呼ばれてしまいます。
これはメソッドのオーバーロードで、String型がIComparableインターフェイスを実装しているため、
より厳密に型付けされたメソッドが呼ばれるためのようでした。
データセットに対する検証をかける場合、
Microsoft.Practices.EnterpriseLibrary.Validation.Validator.Validate(object target)メソッドで検証を行うため、
現状の仕様で問題ないのですが、
今回のように直接Validatorを呼び出す場合、
オーバーロードで呼ばれるメソッドがあいまいになるという問題になってしまいます。
Validatorを直接使用するときに直感的な結果が返ってこないのは良くないため、
次回リリース時に現状の仕様を再検討するようにいたします。
Reply to
#38610
Reply to #38613
×
Subject
Body
Reply To Message #38613 > 追記です。 > > StringLengthRangeValidator は、Object型に対しても入力値検証をかけられるようにしたいという設計時の思想がありました。 > したがって、内部的には DoValidate(object objectToValidate, object currentTarget, string key, ValidationResults validationResults) メソッドをオーバーライドして、 > objectToValidate.ToString().Length で文字列長を取得しています。 > > 今回の件では、StringLengthRangeValidator.Validate メソッドの引数に、String型を指定しています。 > String型を指定すると、StringLengthRangeValidator の > DoValidate(object objectToValidate, object currentTarget, string key, ValidationResults validationResults) メソッドではなく、 > 親クラス TypeRangeValidator の DoValidate(IComparable objectToValidate, object currentTarget, string key, ValidationResults validationResults) メソッドが直接呼ばれてしまいます。 > これはメソッドのオーバーロードで、String型がIComparableインターフェイスを実装しているため、 > より厳密に型付けされたメソッドが呼ばれるためのようでした。 > > データセットに対する検証をかける場合、 > Microsoft.Practices.EnterpriseLibrary.Validation.Validator.Validate(object target)メソッドで検証を行うため、 > 現状の仕様で問題ないのですが、 > 今回のように直接Validatorを呼び出す場合、 > オーバーロードで呼ばれるメソッドがあいまいになるという問題になってしまいます。 > > Validatorを直接使用するときに直感的な結果が返ってこないのは良くないため、 > 次回リリース時に現状の仕様を再検討するようにいたします。
You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.)
Login
Nickname
Preview
Post
Cancel
RE: TERASOLUNA ServerFW.NET(WEB版)のバリデータについて (2008-09-02 15:57 by
Anonymous
#38650)
Reply
Create ticket
StringLengthRangeValidatorのインスタンスを生成したとき、Microsoft.Practices.EnterpriseLibrary.Validation.Validator型で受けることによって正しく文字列チェックができるようになりました。ありがとうございました。理由も理解できましたが、できたら私のような「間違った」使い方でもうまく動いてくれると開発者にやさしいかもと思いました。
Reply to
#38613
Reply to #38650
×
Subject
Body
Reply To Message #38650 > StringLengthRangeValidatorのインスタンスを生成したとき、Microsoft.Practices.EnterpriseLibrary.Validation.Validator型で受けることによって正しく文字列チェックができるようになりました。ありがとうございました。理由も理解できましたが、できたら私のような「間違った」使い方でもうまく動いてくれると開発者にやさしいかもと思いました。
You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.)
Login
Nickname
Preview
Post
Cancel
RE: TERASOLUNA ServerFW.NET(WEB版)のバリデータについて (2008-09-02 17:00 by
tatsumihr
#38652)
Reply
Create ticket
貴重なご意見として、今後の機能改善につなげさせていただきたいと思います。
Reply to
#38650
Reply to #38652
×
Subject
Body
Reply To Message #38652 > 貴重なご意見として、今後の機能改善につなげさせていただきたいと思います。
You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.)
Login
Nickname
Preview
Post
Cancel