1

私は一般的な問題だと思うものを持っていますが、グーグルの一日は何も役に立ちませんでした。

チェックボックスとテキストフィールドのあるフォームがあります。チェックボックスが選択されている場合に限り、テキストフィールドの正規表現検証を実行したいと思います。正規表現の検証は現在、他の非条件フィールドで機能していますが、action-validation.xmlファイルにこれを可能にする構文があるかどうかを私は一生理解できません。すなわち。他の分野については以下のようなものがあります。私が必要としているのは、チェックボックスが選択されている場合にのみ、これを条件付きで評価する方法です。

<validators>
 <field name="sn">
  <field-validator type="regex" >
   <param name="expression">
    [0-9]{12} 
                   </param>
   <message>Serial number format is invalid. Please try again</message>
  </field-validator>
 </field>
</validators>

誰かがこれを行う方法のコード例を持っていますか?

どんな助けでも大歓迎です。

4

2 に答える 2

1

Struts 1 には、複雑な検証を実行するために使用できる「validwhen」という検証ルールがありましたが、Struts 2 では、私の知る限り、そのような検証はありません。

Struts 2では、使用するOGNL式を指定できるExpression Validatorを使用できるため、次のようなことを試すことができると思います。

<validator type="expression">
    <param name="expression">checkboxField eq "selected" and inputText eq "bla"</param>
    <message>....</message>
</validator>

私が知らないことの 1 つは、OGNL を使用して正規表現チェックを行う簡単な方法があるかどうかです (調べる必要があります)。

さらに、それが機能しない場合は、いつでも独自のカスタム バリデータを作成できます。

于 2010-12-29T20:57:54.977 に答える
0

expressionおよびfieldexpressionバリデーターはOGNL 式を取ります。true と評価すると、false が失敗します。この要件のために、それらを非常に簡単に使用できます。

個人的には、あなたがやっているように、組み込みのバリデーターを XML 経由で使用し、validate() メソッド (または methodname-validate() メソッド) にカスタム検証ロジックを実装します。単なる好みで、正当な理由はありません。

于 2010-12-30T02:19:02.043 に答える