Używam Thymeleaf jako silnika szablonu. Jak przekazać zmienną z modelu Spring do zmiennej JavaScript?
Strona wiosny:
@RequestMapping(value = "message", method = RequestMethod.GET)
public String messages(Model model) {
model.addAttribute("message", "hello");
return "index";
}
Strona klienta:
<script>
....
var m = ${message}; // not working
alert(m);
...
</script>
javascript
spring
thymeleaf
Matteo
źródło
źródło
/*<![CDATA[*/
makro, otrzymasz to.<script th:inline="javascript">
źródło
defaultanyvalue
będzie on używany tylko podczas uruchamiania strony statycznie, czyli poza kontenerem WWW. Jeśli uruchomiono wewnątrz kontenera, a zmiennamessage
nie została zadeklarowana, wynikowy kod źródłowy będzievar message = null;
th:inline="javascript"
do tagu skryptu.Thymeleaf 3 teraz:
Wyświetl stałą:
Wyświetl zmienną:
Lub w komentarzu, aby mieć poprawny kod JavaScript podczas otwierania pliku szablonu w sposób statyczny (bez wykonywania go na serwerze).
Thymeleaf nazywa to: naturalnymi szablonami JavaScript
Thymeleaf zignoruje wszystko, co napisaliśmy po komentarzu i przed średnikiem.
Więcej informacji: http://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#javascript-inlining
źródło
Zgodnie z dokumentacją istnieje kilka sposobów wykonania inliningu.
Właściwy sposób, który musisz wybrać w zależności od sytuacji.
1) Po prostu umieść zmienną z serwera w javascript:
2) Połącz zmienne javascript ze zmiennymi po stronie serwera, np. Musisz stworzyć link do żądania wewnątrz javascript:
Jedyna sytuacja, której nie potrafię rozwiązać - wtedy muszę przekazać zmienną javascript wewnątrz metody Java wywołującej wewnątrz szablonu (to chyba niemożliwe).
źródło
UPEWNIJ SIĘ, że masz już tymianek na stronie
źródło
Widziałem takie rzeczy działające na wolności:
źródło