web-dev-qa-db-ja.com

Spring v3では、要素「mvc:resources」の宣言が見つかりません

現在実行中

Tomcat:v6

Spring Tools Suite:v2.7.2

Spring Framework: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は、静的ファイルをマッピングするmvc:resourcesを除き、すべてのURLをサーブレットにマッピングします。

  • 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時間掘りましたが、まだ確固たる答えはありません...

26
Luc Laverdure

Springコンテキストでは、xml mvc名前空間のURLはschemaLocationのURLと一致する必要があります。このようなもの:

<?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は一意のIDの一種であり、xsi:schemaLocationの実際のスキーマの場所にマップされます。

46
Eugene Kuleshov

Spring名前空間のURLを使用するとき、私は通常バージョン情報を使用しません。これはほとんどの場合うまく機能します。名前空間のURLを試してみたいかもしれません

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

の代わりに

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

同じエラーが発生していました。原因は、Maven依存関係spring -webmvcの欠落です。以下の依存関係を含めて、動作を開始しました。

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

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名前空間に変更すると、正常に機能するはずです。

1
dlaidlaw

私はudemyのスプリングコースに登録しました。私は私のインストラクターが私に行うように示したすべてのステップに従いました。したがって、spring mvcとhibernateを使用している場合、スキーマドキュメントの読み取りに失敗しました ' http://www.springframework.org/schema/tx/spring-tx.xsd 'などにこのエラーが発生することがあります

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

私の春の設定ファイルには、これらの2つの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

実際に私はこれらの2つのサイトを訪れました 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を追加したばかりです。

だから、私の意見では、バージョンを明示的に指定しないことは良い習慣です。それは私のために働いた、これもあなたのために働くことを願っています。ありがとうございました。

0
Shafqat Shafi