Spring и Thymeleaf: как переместить javascript в отдельный.файл JS

пример:

это работает

<!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 ответов


предполагая, что вы используете конфигурации по умолчанию из Spring Boot, у вас должен быть файл thymeleaf в src/main/resources/templates/ поэтому вы должны поместить файл javascript в:

/src/main/resources/static

объяснение: ваш инструмент сборки (Maven или Gradle) скопирует все содержимое из /src/main/resources/ в пути к классам приложений и, как написано в документы Spring Boot, все содержимое из папки под названием /static в пути к классам будет использоваться как статический содержание.


этот каталог также может работать, но он не рекомендуется:

/src/main/webapp/

не используйте каталог src/main/webapp, если ваше приложение будет упакованы в банку. Хотя этот каталог является общим стандартом, он будет работать только с упаковкой war, и она будет молча игнорироваться большинство инструментов сборки, если вы создаете jar.


согласно документации 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