找不到元素 'constraint-mappings' 的声明
Cannot find the declaration of element 'constraint-mappings'
为简洁起见,我删除了一个长 bean 定义,然后源代码如下所示。执行时,我得到:Caused by: org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'constraint-mappings'.
很好,所以架构或 xml 文件应该有问题。
但是什么。我从来没有真正理解名称空间的所有奇怪定义。所以前 3 个 http URL 无处可去,它们可能服务于更高的目的,而最后一个以 xsd 结尾的确实存在并且确实定义了 constraint-mappings
元素。根据 Intellij IDEA,整个文档是有效的,我相信这一点。如果我试图破坏它,IntellijIDEA 就会看到它。所以我认为它实际上是有效的。所以 为什么 spring 在启动时会产生给定的错误???
validation.xml 文件:
<constraint-mappings
xmlns="http://xmlns.jcp.org/xml/ns/validation/mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/validation/mapping
http://xmlns.jcp.org/xml/ns/validation/mapping/validation-mapping-2.0.xsd"
version="2.0">
<default-package>org.hibernate.validator.referenceguide.chapter05</default-package>
<bean class="RentalCar">
<class ignore-annotations="true">
<group-sequence>
<value>RentalCar</value>
<value>CarChecks</value>
</group-sequence>
</class>
</bean>
<constraint-definition annotation="org.mycompany.CheckCase">
<validated-by include-existing-validators="false">
<value>org.mycompany.CheckCaseValidator</value>
</validated-by>
</constraint-definition>
</constraint-mappings>
validation.xml
文件专门为验证工厂提供配置。您可以配置时钟提供程序、附加值提取器等。您还可以在其中引用约束映射文件(您在 post 中拥有的文件)。这是来自 documentation:
的示例的一部分
<validation-config
xmlns="http://xmlns.jcp.org/xml/ns/validation/configuration"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/validation/configuration
http://xmlns.jcp.org/xml/ns/validation/configuration/validation-configuration-2.0.xsd"
version="2.0">
<default-provider>com.acme.ValidationProvider</default-provider>
<message-interpolator>com.acme.MessageInterpolator</message-interpolator>
<traversable-resolver>com.acme.TraversableResolver</traversable-resolver>
<constraint-validator-factory>
com.acme.ConstraintValidatorFactory
</constraint-validator-factory>
<parameter-name-provider>com.acme.ParameterNameProvider</parameter-name-provider>
<clock-provider>com.acme.ClockProvider</clock-provider>
<value-extractor>com.acme.ContainerValueExtractor</value-extractor>
<constraint-mapping>META-INF/validation/constraints-car.xml</constraint-mapping>
<property name="hibernate.validator.fail_fast">false</property>
</validation-config>
因此 validation.xml
应该有 validation-config
元素。这很可能就是您收到该错误的原因。
为简洁起见,我删除了一个长 bean 定义,然后源代码如下所示。执行时,我得到:Caused by: org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'constraint-mappings'.
很好,所以架构或 xml 文件应该有问题。
但是什么。我从来没有真正理解名称空间的所有奇怪定义。所以前 3 个 http URL 无处可去,它们可能服务于更高的目的,而最后一个以 xsd 结尾的确实存在并且确实定义了 constraint-mappings
元素。根据 Intellij IDEA,整个文档是有效的,我相信这一点。如果我试图破坏它,IntellijIDEA 就会看到它。所以我认为它实际上是有效的。所以 为什么 spring 在启动时会产生给定的错误???
validation.xml 文件:
<constraint-mappings
xmlns="http://xmlns.jcp.org/xml/ns/validation/mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/validation/mapping
http://xmlns.jcp.org/xml/ns/validation/mapping/validation-mapping-2.0.xsd"
version="2.0">
<default-package>org.hibernate.validator.referenceguide.chapter05</default-package>
<bean class="RentalCar">
<class ignore-annotations="true">
<group-sequence>
<value>RentalCar</value>
<value>CarChecks</value>
</group-sequence>
</class>
</bean>
<constraint-definition annotation="org.mycompany.CheckCase">
<validated-by include-existing-validators="false">
<value>org.mycompany.CheckCaseValidator</value>
</validated-by>
</constraint-definition>
</constraint-mappings>
validation.xml
文件专门为验证工厂提供配置。您可以配置时钟提供程序、附加值提取器等。您还可以在其中引用约束映射文件(您在 post 中拥有的文件)。这是来自 documentation:
<validation-config
xmlns="http://xmlns.jcp.org/xml/ns/validation/configuration"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/validation/configuration
http://xmlns.jcp.org/xml/ns/validation/configuration/validation-configuration-2.0.xsd"
version="2.0">
<default-provider>com.acme.ValidationProvider</default-provider>
<message-interpolator>com.acme.MessageInterpolator</message-interpolator>
<traversable-resolver>com.acme.TraversableResolver</traversable-resolver>
<constraint-validator-factory>
com.acme.ConstraintValidatorFactory
</constraint-validator-factory>
<parameter-name-provider>com.acme.ParameterNameProvider</parameter-name-provider>
<clock-provider>com.acme.ClockProvider</clock-provider>
<value-extractor>com.acme.ContainerValueExtractor</value-extractor>
<constraint-mapping>META-INF/validation/constraints-car.xml</constraint-mapping>
<property name="hibernate.validator.fail_fast">false</property>
</validation-config>
因此 validation.xml
应该有 validation-config
元素。这很可能就是您收到该错误的原因。