thymeleaf
を使ってページを作りたいと思います。しかし、私は静的ファイルにいくつか問題があります。私は同様の問題で(1、2、3)の質問を調査していますが、それは私を助けません。Spring Bootで静的リソースをThymeleafでロードする
私はアプリケーションでSpring Boot
フレームワークを使用します。 私のファイルは、のように見える:
test.htmlという
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<script src="js/test.js" th:src="@{/test.js}"/>
</head>
<body>
<button onclick="testFunction('test value')">Button</button>
</body>
</html>
test.js
function testFunction(test) {
console.log(test);
}
Configurationクラス
@Configuration
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations("classpath:/static/js/");
super.addResourceHandlers(registry);
}
}
問題が発生しました。test.html
ファイルをロードしてもJavaScriptがロードされません。
@GetMapping(value = "web/test")
public String getTestHtmlPage() {
return "test";
}
/api/v1
私が間違って何application.properties => server.servlet-path=/api/v1
で構成ですか?手伝って頂けますか?
ありがとうございます! registry.addResourceHandler("/**").addResourceLocations("classpath:/static/js/");
をより良く理解するために
あなたはtest.jsにエラーを含めなかった...それは404ですか?実際のパスは 'js/test.js'ではなく' test.js'でなければなりません –
はい、404エラーです。私が ''に変更した場合、レスポンスステータスは200ですが、コンソールに 'Script from'を実行するのが拒否されました: 'localhost:8080/api/v1/web/test.js'のMIMEタイプ( 'text/html')が実行可能でなく、厳密なMIMEタイプチェックが有効になっているためです。 –
私はThymeleafを知らないが、[docs](http://www.thymeleaf.org/doc/articles/standardurlsyntax.html)を見ると、HTMLコンテンツには「th:href」が適用されます。 JavascriptはHTMLではないので、 'th:href'を削除し、' src'を 'th:src'に変更してください。 –