0

次の問題があります:

Struts アプリケーションがあります。基本的に、xml 検証を使用してフィールドを検証します。チェックボックスのセットを一度に検証するフォーム検証を追加しました(少なくともチェックボックスが選択されていることを検証する方法が見つかりませんでしたが、これは別の話です...)。

したがって、フォームの検証は機能していますが、xml の検証は機能しなくなりました。しかし、追加したフォーム検証を削除すると、再び機能します。

要点をまとめると :

1- xml 検証のみ: 動作中 2- フォーム検証のみ: 動作中 3- 同じアクションに対する XML とフォーム検証の両方: フォーム検証のみが動作中 .

1 つのアクションで両方の検証を使用できますか?

送信

4

1 に答える 1

0

最後に、問題の原因を自分で見つけました!

Validation の順序と関係があります: 私の場合、Struts は XML 検証から始まり、結果をグローバル オブジェクトに格納します。

ActionErrors : http://struts.apache.org/release/1.2.x/api/org/apache/struts/action/ActionErrors.html

...その後、Strutsはフォームに追加したvalidate()メソッドを実行しますが、行には次の行があります:

ActionErrors errors  = new ActionErrors() ; 

... グローバルな ActionErrors オブジェクトを置き換えます。

フォーム内の validate() メソッドの正しいコードは次のとおりです。

ActionErrors errors = super.validate(mapping, request);
if (errors == null) {
errors = new ActionErrors();
}

.. このようにして、XML 検証によって既に見つかったエラーを保持することができ、それらを置き換えません。

于 2013-10-07T19:34:41.787 に答える