Подтвердить что ты не робот

Spring v3 для элемента 'mvc: resources' не найдено объявления

В настоящее время выполняется

Tomcat: v6

Spring Набор инструментов: v2.7.2

Spring Рамка: spring -webmvc-3.0.5

Сервлет XML

 <?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: ресурсы, сопоставляющие статические файлы.

Ошибки

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

  • cvc-complex-type.2.4.c: Подстановочный шаблон является строгим, но для элемента 'mvc: resources' не найдено объявления. app-servlet.xml/app/www/WEB-INF

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

Вопрос

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

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

4b9b3361

Ответ 1

В вашем контексте spring xml mvc namespace url должен соответствовать 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.

Ответ 2

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

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

вместо

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

Ответ 3

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

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>

Ответ 4

Я думаю, что неправильное отображение схемы. Пространство имен указано как:

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, оно должно работать нормально.

Ответ 5

Я зачислил курс spring на удемию. Я следовал за каждым шагом, который показал мне мой инструктор. Поэтому, если вы используете 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 i.e, spring -mvc-4.2.xsd и spring -tx-4.2.xsd

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