web-dev-qa-db-fra.com

Spring v3 aucune déclaration n'a pu être trouvée pour l'élément 'mvc: resources'

En cours d'exécution

Tomcat: v6

Spring Tools Suite: v2.7.2

Spring Framework: spring-webmvc-3.0.5

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

code partiel web.xml

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

Objectif de la servlet

web.xml mappe toutes les URL vers le servlet à l'exception de mvc: resources mappant les fichiers statiques.

Bugs

  • cvc-complex-type.2.4.c: le caractère générique correspondant est strict, mais aucune déclaration ne peut être trouvée pour l'élément 'mvc: annotation-driven'. app-servlet.xml/app/www/WEB-INF

  • cvc-complex-type.2.4.c: Le caractère générique correspondant est strict, mais aucune déclaration ne peut être trouvée pour l'élément 'mvc: resources'. app-servlet.xml/app/www/WEB-INF

Problèmes connus

Question

Comment puis-je corriger les erreurs de compilation pour que les ressources mvc: fonctionnent correctement?

J'ai creusé environ 2 heures pour cela, pas de réponse solide pour le moment ...

26
Luc Laverdure

Dans votre contexte de printemps, l'URL de l'espace de noms xml mvc doit correspondre à l'URL dans schemaLocation. Quelque chose comme ça:

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

Il s'agit d'une déclaration d'espace de noms XML standard. L'URL de l'espace de noms est en quelque sorte un identifiant unique, qui est ensuite mappé à l'emplacement réel du schéma dans xsi: schemaLocation.

46
Eugene Kuleshov

Lorsque j'utilise des URL d'espaces de noms Spring, je n'utilise normalement pas les informations de version et cela fonctionne la plupart du temps assez bien. Vous voudrez peut-être essayer l'URL de l'espace de noms

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

au lieu de

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

J'obtenais la même erreur. La cause en était le ressort de dépendance Maven manquant -webmvc. J'ai inclus la dépendance ci-dessous et elle a commencé à fonctionner.

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

Je pense que votre mappage schemaLocation est incorrect. L'espace de noms est spécifié comme suit:

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

ce qui est correct, je crois, mais dans le schéma Emplacement vous avez

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

Donc, si vous modifiez la première ligne du mappage schemaLocation vers votre espace de noms mvc, cela devrait fonctionner correctement.

1
dlaidlaw

Je me suis inscrit au cours de printemps sur udemy. J'ai suivi chaque étape que mon instructeur me montrait. Donc, si vous utilisez Spring mvc et hibernate, vous pouvez rencontrer cette erreur. Impossible de lire le document de schéma ' http://www.springframework.org/schema/tx/spring-tx.xsd ' etc. pour:

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

dans mon fichier de configuration de printemps, j'avais ces deux 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

dans xsi: schemaLocation, que j'ai remplacé par

    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

en fait, j'ai visité ces deux sites http://www.springframework.org/schema/mvc/ et http://www.springframework.org/schema/tx/ et vient d'ajouter la dernière version de spring-mvc et spring-tx, c'est-à-dire spring-mvc-4.2.xsd et spring-tx-4.2.xsd

Donc, à mon avis, spécifier la version non explicitement est une bonne pratique. Cela a fonctionné pour moi, j'espère que cela fonctionne aussi pour vous. Je vous remercie.

0
Shafqat Shafi