2014-12-30 3 views
7

Пример: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> 

Что я делаю неправильно?

+0

Не могли бы вы проверить, какие ошибки вы уже с помощью инструментов разработчика в вашем браузере? Возможно, файл hello.js не загружается, измените его на , если у вас есть это в корневом контексте –

+0

Patrick, slash не помогает. Сообщение говорит: «ReferenceError: sayHello не определено» – Andrey

ответ

6

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

/src/main/resources/static 

Объяснения: Ваш инструмент сборки (Maven или Gradle) скопирует все содержимое с /src/main/resources/ в путь класса приложения и, как написано в Spring Boot's docs, все содержимое из каталога /static в classpath wil Я должен быть статическим.


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

/src/main/webapp/ 

Do not use the src/main/webapp directory if your application will be packaged as a jar. Although this directory is a common standard, it will only work with war packaging and it will be silently ignored by most build tools if you generate a jar.

+0

Действительно! Большое спасибо Андреа. – Andrey

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

Смежные вопросы