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 или из пути к классам.
существует также краткое упоминание о том, как перезагрузить ваш статический контент и шаблон файлы.