私は次のwebjarをpom.xml
に組み込んだSpringプロジェクトを持っています。
<dependency>
<groupId>org.webjars</groupId>
<artifactId>bootstrap</artifactId>
<version>3.3.7-1</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.1.1</version>
</dependency>
次に、HTMLビューに次のリンクとスクリプトを含めました。
<link rel="stylesheet" href="@{/webjars/bootstrap/3.3.7-1/css/bootstrap.min.css}" />
<script src="@{/webjars/jquery/3.1.1/jquery.min.js}"></script>
<script src="@{/webjars/bootstrap/3.3.7-1/js/bootstrap.min.js}"></script>
しかし、それは機能しませんでした、マッピングが見つかりませんでした:
[org.springframework.web.servlet.PageNotFound] (default task-15) No mapping found for HTTP request with URI [/TestPublicWeb-0.0.1-SNAPSHOT/webjars/bootstrap/3.3.7-1/css/bootstrap.min.css] in DispatcherServlet with name 'testapp'
...次のマッピングをservlet.xml
に含めようとしました:
<mvc:resources mapping="/webjars/**" location="classpath:/META-INF/resources/webjars/"/>
しかし、これでは、私の/TestApplication
のマッピングが見つかりません。
[org.springframework.web.servlet.PageNotFound] (default task-13) No mapping found for HTTP request with URI [/TestApplication/] in DispatcherServlet with name 'testapp'
どのようにwebjarをSpringプロジェクトに正しい方法で含める必要がありますか?
問題は、標準のHTML href
タグとThymeleafの構文_@{}
_を混在させていることです。次のように変更します。
_<link rel="stylesheet" th:href="@{/webjars/bootstrap/3.3.7-1/css/bootstrap.min.css}" />
<script th:src="@{/webjars/jquery/3.1.1/jquery.min.js}"></script>
<script th:src="@{/webjars/bootstrap/3.3.7-1/js/bootstrap.min.js}"></script>
_
また、Spring Securityを使用している場合は、次のようにconfigure(HttpSecurity http)
メソッドでwebjarへの承認も指定する必要があります。
_http.authorizeRequests().antMatchers("/webjars/**").permitAll();
_
上記がうまくいかない理由について、私が考えることができるいくつかのこと。 servlet.xmlファイル内でSpring MVCネームスペースを使用していることを確認してください。次のようになります。
<bean xmlns:mvc="http://www.springframework.org/schema/mvc"....
また、クラスパスを指定したときに@{..}
を使用してアセットにアクセスしようとしている理由もわかりません。 @{..}
を次のように削除してみてください。
<link rel="stylesheet" href="/webjars/bootstrap/3.3.7-1/css/bootstrap.min.css" />
<script src="/webjars/jquery/3.1.1/jquery.min.js"></script>
<script src="/webjars/bootstrap/3.3.7-1/js/bootstrap.min.js"></script>