Spring和Thymeleaf:如何将javascript移动到单独的.js文件中

时间:2014-12-30 16:38:31

标签: javascript spring thymeleaf

示例:

这有效

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org">
<head lang="en">
    <meta charset="UTF-8"/>
    <title></title>
</head>
<body>
    <button th:onclick="'javascript:sayHello(\'hello\')'">Say Hello</button>
</body>

<script>
    function sayHello(text) {
        alert(text);
    }
</script>
</html>

但是,如果我将js移动到同一文件夹中的文件hello.js,则脚本无效。

我试着像这样嵌入:

<script type="text/javascript" th:src="@{hello.js}"></script>

就像这样:

<script type="text/javascript" src="hello.js"></script>

我做错了什么?

2 个答案:

答案 0 :(得分:8)

假设您使用的是Spring Boot的默认配置,您应该在src/main/resources/templates/中找到您的百万富翁文件,因此您应该将javascript文件放入:

/src/main/resources/static

解释:您的构建工具(Maven或Gradle)将复制应用程序类路径中/src/main/resources/的所有内容,并按照Spring Boot's docs中的说明复制来自/static的所有内容

中,类路径中名为/src/main/webapp/ 的目录将作为静态内容提供。


这个目录也可以,但不鼓励:

{{1}}
  

如果您的应用程序是,请不要使用src / main / webapp目录   打包成一个罐子。虽然这个目录是一个通用标准,但它   只会与战争包装一起使用,它将被默默地忽略   如果你生成一个jar,大多数构建工具。

答案 1 :(得分:1)

根据Spring Boot文档,静态资源是从/ static,/ public或类路径提供的。

http://docs.spring.io/spring-boot/docs/1.2.0.RELEASE/reference/htmlsingle/#boot-features-spring-mvc-static-content

还简要提到了如何重新加载静态内容和模板文件。

http://docs.spring.io/spring-boot/docs/1.2.0.RELEASE/reference/htmlsingle/#howto-reload-static-content