2

项目的 jar 中有一个 bean 验证,validation.xml 包含地址 bean 的字段级验证。

另一个项目使用地址类,需要有特定的地址验证。因此,extended-validation.xml 是使用 Address bean 的类级别验证创建的。

结果,在应用部署期间,发生了 ValidationException:javax.validation.ValidationException: my.base.datatypes.Address has already be configured in xml.

这是两个具有基本验证和“扩展验证”的验证 xml 文件。

验证.xml

<bean class="my.base.datatypes.Address" ignore-annotations="true">
    <getter name="country">
        <constraint annotation="my.imp.services.validation.ValidCode">
            <message>{msg01}</message>
            <groups>
                <value>my.imp.services.validation.ImportGroup</value>
            </groups>
            <element name="name">Country</element>
        </constraint>
    </getter>
</bean>

扩展验证.xml

<bean class="my.base.datatypes.Address" ignore-annotations="true">
    <class ignore-annotations="true">
        <constraint annotation="my.extended.imp.services.validation.ValidAddress">
            <message>ERROR DURING ADDRESS VALIDATION</message>
            <groups>
                <value>my.imp.services.validation.ImportGroup</value>
            </groups>
        </constraint>
    </class>
</bean>

是否可以扩展已经存在的验证?

4

1 回答 1

0

解决方案似乎非常简单和微不足道。如果要扩展验证规则,请使用不同的验证器来加载extended-validation.xml约束配置。在这种情况下,base 验证器根据validation.xmlconfig 验证数据,另一个验证器根据extended-validation.xmlconfig 验证数据。因此不再发生配置冲突。

于 2015-10-06T09:29:42.240 回答