javax.validation.ValidationException: %class% 已在 xml 中配置
javax.validation.ValidationException: %class% has already be configured in xml
项目的 jar 中有一个 bean 验证,其中 validation.xml 包含 Address bean 的字段级验证。
另一个项目使用 Address class 并且需要进行特定的 Address 验证。因此扩展-validation.xml 是使用地址 bean 的 class 级验证创建的。
因此,在应用程序部署期间,发生了 ValidationException:javax.validation.ValidationException: my.base.datatypes.Address has already be configured in xml.
。
这里有两个验证 xml 文件,其中包含基本验证和 "extended validation"。
validation.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>
扩展-validation.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>
是否可以扩展已经存在的验证?
解决方案看起来非常简单和琐碎。如果你想扩展验证规则,使用不同的验证器来加载 extended-validation.xml
约束配置。在这种情况下,基本验证器根据 validation.xml
配置验证数据,另一个验证器根据 extended-validation.xml
配置验证数据。因此不会再发生配置冲突。
项目的 jar 中有一个 bean 验证,其中 validation.xml 包含 Address bean 的字段级验证。
另一个项目使用 Address class 并且需要进行特定的 Address 验证。因此扩展-validation.xml 是使用地址 bean 的 class 级验证创建的。
因此,在应用程序部署期间,发生了 ValidationException:javax.validation.ValidationException: my.base.datatypes.Address has already be configured in xml.
。
这里有两个验证 xml 文件,其中包含基本验证和 "extended validation"。
validation.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>
扩展-validation.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>
是否可以扩展已经存在的验证?
解决方案看起来非常简单和琐碎。如果你想扩展验证规则,使用不同的验证器来加载 extended-validation.xml
约束配置。在这种情况下,基本验证器根据 validation.xml
配置验证数据,另一个验证器根据 extended-validation.xml
配置验证数据。因此不会再发生配置冲突。