2014-12-30 6 views
7

Esempio:primavera e Thymeleaf: Come spostare JavaScript per un .js separati presentare

Questo funziona

<!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> 

Ma, se mi muovo js ai hello.js di file nella stessa cartella, lo script non funziona.

ho provato incorporare in questo modo:

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

E in questo modo:

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

Quello che sto facendo di sbagliato?

+0

Potrebbe verificare quale errore si hanno utilizzando strumenti di sviluppo nel tuo browser? Forse il file hello.js non viene caricato, cambialo in se lo hai nel tuo contesto root –

+0

Patrick, barra non aiuta Messaggio dice "ReferenceError: sayHello non è definito" – Andrey

risposta

6

Supponendo che si sta utilizzando configurazioni di default a partire dalla primavera di avvio si dovrebbe avere il file thymeleaf in src/main/resources/templates/ così si dovrebbe mettere il file javascript in:

/src/main/resources/static 

Spiegazione: il vostro strumento di compilazione (Maven o Gradle) copierà tutto il contenuto da /src/main/resources/ nel classpath dell'applicazione e, come scritto in Spring Boot's docs, tutto il contenuto da una directory denominata /static nel classpath wil essere servito come contenuto statico


Questa directory potrebbe funziona anche, ma è sconsigliato:

/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

Infatti! Grazie mille Andrea. – Andrey