2016-07-28 18 views
1

私のフォームに条件付きでバリデーションしたいフィールドが2つあります(別のフィールドに特定の値がある場合は、バリデーションしたい、そうでない場合はバリデーションしたくありません)。ここでStruts2の条件付きバリデーション

が私の現在のxmlです:

<field name="effectiveDate"> 
    <field-validator type="fieldexpression"> 
     <param name="expression">childReason not in {1} or effectiveDate.length() gt 9</param> 
     <message key="validation.effectiveDate.entered" /> 
    </field-validator> 
</field> 
(同様の質問が示唆するように)

は当初、私は、しかし、私が何を(私が思う)EL申し出以上のものを必要とする、これを行うには、フィールドの式を使用して、計画しました

しかし、フィールドの長さを単純にチェックするのではなく、regexを使って日付が有効であることを確認します。さらに、将来の日付や今日の日付よりも1年古い日付を入力しないようにしたい。

基本的にはカスタムバリデーターを使用したいと思いますが、ELという式でこれらのことを確認できる方法を呼び出しています。

+0

'validateXXX'メソッドを使って動作検証するか、カスタムバリデータを作成してください。 –

+0

@AleksandrMは私が受け入れることができるようにその答えを作りたいですか?ありがとう。 – Othya

答えて

1

あなたのアクションは、(あなたがActionSupportを拡張している場合はそれがない)Validateableインタフェースを実装し、validationインターセプタでスタックを使用している場合、あなたはXXXはあなたが検証するメソッドの名前ですvalidateXXX()メソッドを使用することができます。

カスタムバリデーターを作成することもできます。

+0

Strutsはこの種の検証を提供するかもしれませんが、特定の使用事例に応じて検証ルールが重複することがあります。 – Naros

+0

@Naros And?それはあなたがそれを使用することができないことを意味しません。 –

関連する問題