gpt4 book ai didi

java - 使用 Thymeleaf 在 Spring Boot 中加载静态资源

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:12:22 24 4
gpt4 key购买 nike

我想使用 thymeleaf 制作页面。但是我对静态文件有一些问题。我已经调查了具有类似问题的问题( 123 ),但它对我没有帮助。

我在应用程序中使用 Spring Boot 框架。我的文件看起来像: enter image description here

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";
}

enter image description here

/api/v1application.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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com