web-dev-qa-db-ja.com

Thymeleaf + Bootstrap webjarsを使用したSpring MVC

私は次の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プロジェクトに正しい方法で含める必要がありますか?

8
user1563721

問題は、標準の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();
_
17
DimaSan

上記がうまくいかない理由について、私が考えることができるいくつかのこと。 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>
3
coletrain