2011-08-11 3 views
2

フォームには電子メールと電話番号の2つのフィールド(整数)があります。フォームは、struts検証フレームワーク(ActionClass-validation.xml)を使用して検証されます。これらの2つのフィールドはオプションです。そのため、ユーザーは空白のままにすることができます。しかし、それらが空白でない場合、フィールドは検証される必要があります。これを行うには、xmlでバリデーターを記述する方法を知る手助けをしてください。Struts 2は空でない場合にフィールドを検証します

+1

xmlは、時間を節約できる点まで再利用したい場合に適しています。単純に検証メソッドを追加すると、多くの人が正しい正規表現/ xml構文を頭に入れています。 Javaのいくつかの行には数分しかかかりませんでした! – Quaternion

+0

電子メールについては、セッターで@EmailValidatorを使う方がはっきりしています。参照:(セクション検証アノテーション)http://struts.apache.org/2.x/docs/annotations.html – Quaternion

+0

@Quaternionまた、メソッドの検証も好む。検証のためにJavaコードを使用すると、より強力に感じる – anu

答えて

1

あなたはまた、注釈を使用することができ、この

<field name="email"> 
    <field-validator type="email"> 
     <message>Invalid Email (empty email accepted)</message> 
    </field-validator> 
</field> 

<field name="contact"> 
    <field-validator type="regex"> 
     <param name="expression"><![CDATA[([1234567890]+)]]></param> 
     <message>Invalid Contact Number (empty number accepted)</message> 
    </field-validator> 
</field> 

Here is a complete example.

4

を試してみてください。私の意見では、理解し、書くこととデバッグすることはより明確です。

:あなたはフィールド(またはアクション)エラータグを使用してエラーを参照することができ、あなたのJSPで

@RegexFieldValidator(key = "validation.number", message = "", type = ValidatorType.SIMPLE, expression = NUMBER_PATTERN_STRING) 
public String getNumber() { 
    return number; 
} 

:あなたは正規表現のバリデータを使用することができ、数については

@EmailValidator(type = ValidatorType.SIMPLE, message = "", key = "validation.email") 
public String getEmail() { 
    return email; 
} 

:これは一例です

<s:fielderror fieldName="email" cssClass="myerrorclass"/> 
<s:textfield name="email" cssClass="myclass" cssErrorClass="myothererrorclass"/> 

私はコードがかなり自明であることを願っています。 ハッピーコーディング! ;)

+0

電子メールと電話が空の文字列の場合は、検証からのエラーが発生します。タイトルは「Struts 2が空でなければフィールドを検証する」 – sytolk