1

基本的に、適切な値を持つフィールドが存在するかどうかを確認するために、いくつかのxmlbeanオブジェクトにカスタム検証を作成する必要があるアプリに取り組んでいます。現在、これらのオブジェクトは diff スキーマから生成されています。スキーマに対して xmlbeans によって提供される検証を使用していますが、さらに処理する前に、これらのオブジェクトに対してさらにビジネス検証を行う必要があります。誰かがこのユースケースのデザインパターンを提案できますか?

ありがとう

4

2 に答える 2

1

独自のバリデータインターフェイスを定義します。

interface Validator <T extends XmlBean> {
    boolean validate(T bean);
}

扱うクラスごとに実装します。ファクトリクラスを提供して、次のインターフェイスを実装することにより、各 Bean クラスのバリデータを取得できます。

interface IValidatorFactory {
    public <T extends XmlBean> Validator<T> getValidator(Class<T> clazz);
}

class ValidatorFactory implements IValidatorFactory {
    private final Map<Class<? extends XmlBean>, Validator<? extends XmlBean>> map =
        new HashMap<Class<? extends XmlBean>, Validator<? extends XmlBean>>();

    @SuppressWarnings("unchecked")
    @Override
    public <T extends XmlBean> Validator<T> getValidator(Class<T> clazz) {
        return (Validator<T>)map.get(clazz);
    }

    public <T extends XmlBean> void registerValidator(Class<T> clazz, Validator<T> validator) {
        map.put(clazz, validator);
    }
}
于 2011-08-04T18:32:21.943 に答える
0

生成された XmlBeans クラスに、独自のカスタムの事前設定フックと事後設定フックを追加できる可能性があります。フックを追加するには、.xsdconfigファイルを作成し、呼び出すことができるいくつかpreSet()の静的メソッドを提供する必要があります。postSet()

例については、次を参照してください。

https://www.ibm.com/developerworks/xml/library/x-xmlbeanse/?ca=dgr-eclipse-1

また:

http://svn.apache.org/viewvc/xmlbeans/trunk/test/cases/xbean/extensions/prePostFeature/readOnlyBean/po.xsdconfig?revision=HEAD&view=markup

http://svn.apache.org/viewvc/xmlbeans/trunk/test/src/xmlobject/extensions/prePostFeature/readOnlyBean/existing/FooHandler.java?revision=HEAD&view=markup

于 2011-08-04T22:54:45.177 に答える