Не удается найти объявление элемента 'отображения ограничений' - PullRequest
0 голосов
/ 23 октября 2018

Чтение документации: https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#section-mapping-xml-constraints

Я удалил одно определение длинного компонента для краткости, тогда источник выглядит как показано ниже.При выполнении я получаю: 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 file:

<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>

1 Ответ

0 голосов
/ 24 октября 2018
Файл

validation.xml предназначен для предоставления конфигурации для фабрики валидации.Вы можете настроить поставщика часов, дополнительные экстракторы значений и т. Д. Также вы можете сослаться на файлы отображения ограничений (те, которые у вас есть в вашем посте).Вот часть примера из документации :

<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.Скорее всего, вы получаете эту ошибку.

...