Spring v3 не найдено объявлений для элемента 'mvc: resources' - PullRequest
26 голосов
/ 15 сентября 2011

В настоящее время работает

Tomcat: v6

Spring Tools Suite: v2.7.2

Spring Framework: spring-webmvc-3.0.5

ServletXML

 <?xml version="1.0" encoding="UTF-8"?>
 <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="
          http://www.springframework.org/schema/beans
          http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
          http://www.springframework.org/schema/mvc/spring-mvc
          http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
          http://www.springframework.org/schema/context
          http://www.springframework.org/schema/context/spring-context-3.0.xsd">

      <mvc:annotation-driven />

      <mvc:resources mapping="/resources/**" location="/resources" />

      <context:component-scan base-package="com.app.mvc" />

 </beans>

частичный код web.xml

<servlet-mapping>
    <servlet-name>duckapp</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

Назначение сервлета

web.xml сопоставляет все URL-адреса сервлету, за исключением mvc: resources, отображающего staticфайлы.

Ошибки

  • cvc-complex-type.2.4.c: соответствующий шаблон подстановки является строгим, но не найдено объявлений для элемента 'mvc: annotation-привод.app-servlet.xml / app / www / WEB-INF

  • cvc-complex-type.2.4.c: соответствующий подстановочный знак является строгим, но не найдено никакого объявления для элемента 'MVC: ресурсы.app-servlet.xml / app / www / WEB-INF

Известные проблемы

Вопрос

Как исправить ошибки компиляции, чтобы правильно работать с mvc: resources?

Я копаю около 2 часов для этого, пока нет точного ответа ...

Ответы [ 5 ]

46 голосов
/ 15 сентября 2011

В вашем весеннем контексте URL-адрес пространства имен xml mvc должен совпадать с URL-адресом в schemaLocation. Примерно так:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="
         http://www.springframework.org/schema/mvc
         http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

Это стандартное объявление пространства имен XML. URL-адрес пространства имен является своего рода уникальным идентификатором, который затем сопоставляется с фактическим местоположением схемы в xsi: schemaLocation.

6 голосов
/ 15 сентября 2011

При использовании URL-адресов пространств имен Spring я обычно не использую информацию о версии, и в большинстве случаев это работает довольно хорошо.Вы можете попробовать URL-адрес пространства имен

http://www.springframework.org/schema/mvc/spring-mvc.xsd

вместо

http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
2 голосов
/ 14 января 2013

Я получаю ту же ошибку. Причиной была пропущенная пружина зависимости Maven -webmvc. Я включил нижеприведенную зависимость, и она начала работать.

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
1 голос
/ 15 сентября 2011

Я думаю, что ваше сопоставление schemaLocation неверно.Пространство имен задается как:

xmlns:mvc="http://www.springframework.org/schema/mvc"

, что, я думаю, правильно, но в schemaLocation у вас есть

http://www.springframework.org/schema/mvc/spring-mvc
                http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd

Так что если вы измените первую строку отображения schemaLocation наПространство имен mvc, должно работать нормально.

0 голосов
/ 15 ноября 2017

Я поступил на весенний курс по удемы.Я следил за каждым шагом, который мне показывал мой инструктор.Поэтому, если вы используете spring mvc и hibernate, вы можете столкнуться с этой ошибкой Не удалось прочитать документ схемы 'http://www.springframework.org/schema/tx/spring-tx.xsd' и т. Д. Для:

<mvc:annotation-driven/> and <tx:annotation-driven transaction-manager="myTransactionManager" /> elements

в моем файле конфигурации Spring, у меня были эти два URL

    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc.xsd

    http://www.springframework.org/schema/tx 
    http://www.springframework.org/schema/tx/spring-tx.xsd

в xsi: schemaLocation, которую я заменил на

    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd

    http://www.springframework.org/schema/tx 
    http://www.springframework.org/schema/tx/spring-tx-4.2.xsd

на самом деле я посетил эти два сайта http://www.springframework.org/schema/mvc/ и http://www.springframework.org/schema/tx/ и только что добавил последнюю версиюspring-mvc и spring-tx, т.е. spring-mvc-4.2.xsd и spring-tx-4.2.xsd

Так что, на мой взгляд, указание версии no явно не является хорошей практикой.Это сработало для меня, надеюсь, это работает и для вас.Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...