0

XML ルール ドキュメントの例:

<user>
  <username>
     <not-null/>
     <capitals value="false"/>
     <max-length value="15"/>
  </username>
  <email>
     <not-null/>
     <isEmail/>
     <max-length value="40"/>
  </email>
</user>

これを実装するにはどうすればよいですか?私はゼロから始めています。現在持っているのは、ユーザークラスと、基本的な Spring MVC である (サービスレイヤーと Dao レイヤーを介して) DB にユーザーオブジェクトを保存する UserController です。Spring MVC Validation は使用できませんが、Model クラスでは、管理者がルールを変更できるように XML ドキュメントを使用する必要があります。

XML ルール ドキュメントによって提供されるものに基づいてアルゴリズムを動的に構築するパターンが必要だと思いますが、膨大な量の if ステートメント以外は考えられないようです。

また、解析についてはまだ何もありません。検証プロセスの実際の実装から解析を (分離) する方法がわかりません。

4

2 に答える 2

1

このホイールは何度も再発明されています。

Spring のValidatorインターフェースを実装することで Spring MVC 検証を使用できる可能性がありますが、別の手段でロードされたルールに基づいて検証を行う方法を実装または見つける必要がある場合があります。

Spring でコモンズ検証を使用する方法を説明する多くのページをグーグル検索して見つけました。おまけとして、valang の使用について説明する人もいます。管理者が展開前に検証ルールを編集できる場合は、これらのいずれかで十分です。

自家製の XML ビジネス ルールを本当に作成したい場合は、Apache Digesterを使用してルールを解析することをお勧めします。おそらく、Spring Validator インターフェースの独自の実装で使用されるデータ構造にルールをロードする必要があります。

デプロイ後にルールを変更可能にする必要がある場合は、もちろん、ルールを更新するメカニズムを追加する必要があります。しかし、少なくとも Digester はおそらくそこで役立つでしょう。

于 2010-05-10T12:20:57.927 に答える
0

たぶん例は次のようになります:

  //PSEUDOCODE
  abstract class Validator {
    Map<String method, Set<Field> fields> validationMap;
    Map<String fieldName, Set<String> errorMessages> validationErrors;

 void parseXML() {
     validationMap.add("notNull", { " 'username', 'JavaPete' ", " 'email', 'pete@java.com' " }
     validationMap.add("max-length", { " 'username', 'JavaPete', '15' ", ... }
  }

 void validate() {
      for (String method : validationMap.keys) {
           for (Field field : validationMap.get(method) ) {
                 invoke(method, field);
           }
      }
  }

 void notNull(Field field) {
     if (field.getValue() == "") {
          validationErrors.add(field.getFieldName(), "Can't be null!");
     }
  }

マップに各 Set<> プロパティを正しく追加していないことに注意してください。

これは有効な解決策でしょうか? 屈強?

于 2010-05-10T11:10:14.357 に答える