[Seasar-user:19612] Re: [SAStruts] Requiredでない LongTypeのバリデーション

Hiroshi Ogawa [E-MAIL ADDRESS DELETED]
2010年 4月 6日 (火) 23:52:31 JST


小川と申します。

やりたいこととは少し違いますが。

以前に同じことで悩みました。
Struts のバリデータが半角スペースだけからなる文字列を未入力と
同じとみなしてしまうため、@LongType と宣言しながら long に変換できない文字列が
格納されうるのですよね。

そのときは、S2RequestProcessor を継承して、パラメータが空白文字列だけからなる
場合は空文字列(null だったかも)に置換して、未入力と同じ扱いにしました。
#要求仕様次第ではもちろんアウトですが・・・
参考になれば幸いです。

2010年4月6日13:31 Masanobu Saitoh <[E-MAIL ADDRESS DELETED]>:
> こんにちは。斎藤と申します。
> SAStrutsを使用しています。ありがとうございます。
>
> SAStrutsのアノテーションによるバリデーションですが、
> やりたい事がうまく実現できません。
> 期待する検証結果にならない入力値があります。
> あまり使い込んでいないので使い方が間違っているようでしたらご指摘ください。
>
> 【やりたい事】
> ・検索条件を指定するフォームで long型を期待する入力項目がある。
> ・入力項目が記入されなかったら検索条件にしない。(@Requiredでない)
>
> 【作ったフォームクラス】
>
> public class SomeForm {
>   @LongType
>   public String someid = "";
> }
>
> 【期待する検証結果にならない入力値】
>
> 記号や全角スペースは期待したバリデーションエラーになります。
>
> 半角スペースのみ(1個または複数)を入力値にしたときは
> バリデーションエラーにしたいのですが、
> ならずにすり抜けてアクションクラスに渡ってしまいます。
>
> 他のアノテーションも試しましたがやりたい事は実現できませんでした。
>
> @LongRange(min= 1, max = 999999)
> @Mask(mask = "^[0-9]+$")
>
>
> 【環境】
> SAStruts : sa-struts-1.0.4-sp7.jar
> (commons-validator-1.2.0.jar)
> JDK: jdk1.6.0_13
> Tomcat: 5.5.27
>
> 必須ではないlong型の項目のバリデーションで、
> 半角スペースのみの入力の検証はどうしたらできるでしょうか?
> 半角スペースはアクションクラスで個別に検証が必要なのでしょうか?
>
> 教えてください。
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


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