- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想使用 thymeleaf
制作页面。但是我对静态文件有一些问题。我已经调查了具有类似问题的问题( 1 、 2 、 3 ),但它对我没有帮助。
我在应用程序中使用 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
@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/");
我写的比较透彻answer here讨论无效的资源位置映射。它没有收到任何赞成票,所以我希望它不会很糟糕。 :-)
简而言之,通过映射 classpath:/static/js/
然后访问 /js/test.js
的方式,您告诉Spring 在/static/js/js/test.js
中查找。
您可能需要的是 classpath:/static/
。在这种情况下,当您尝试访问 /js/test.js
时,它会在 /static/js/test.js
中查找文件。
至于 Thymeleaf,我从未使用过它,但文档表明您应该使用 th:src
而不是 th:href
加载脚本。 th:href
似乎仅适用于 HTML 内容。
关于java - 使用 Thymeleaf 在 Spring Boot 中加载静态资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42635940/
我是一名优秀的程序员,十分优秀!