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 часов для этого, еще нет твердого ответа...
Ответы
Ответ 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
Таким образом, по моему мнению, спецификация версии явно не является хорошей практикой.
Это сработало для меня, надеюсь, это сработает и для вас.
Спасибо.