javascript - operator - thymeleaf print variable
Configurando una variable javascript del modelo Spring usando Thymeleaf (6)
De acuerdo con la documentación, hay varias formas de hacer la redacción.
La forma correcta de elegir según la situación.
1) Simplemente ponga la variable del servidor a javascript:
<script th:inline="javascript">
/*<![CDATA[*/
var message = [[${message}]];
alert(message);
/*]]>*/
</script>
2) Combina variables de JavaScript con variables del lado del servidor, por ejemplo, necesitas crear un enlace para solicitar dentro de javascript:
<script th:inline="javascript">
/*<![CDATA[*/
function sampleGetByJquery(v) {
/*[+
var url = [[@{/my/get/url(var1=${#httpServletRequest.getParameter(''var1'')})}]]
+ "&var2="+v;
+]*/
$("#myPanel").load(url, function() {});
}
/*]]>*/
</script>
La única situación que no puedo resolver , entonces necesito pasar una variable de JavaScript dentro del método Java llamando dentro de la plantilla (es imposible, supongo).
¿Cómo puedo leer una variable modelo del modelo Spring
y configurarla en un Javascript?
Tenga en cuenta que estoy usando Thymeleaf
como motor de plantillas.
Lado de la primavera:
@RequestMapping(value = "message", method = RequestMethod.GET)
public String messages(Model model) {
model.addAttribute("message", "hello");
return "index";
}
Lado del cliente:
<script>
....
var m = ${message}; // not working
alert(m);
...
</script>
De la documentation oficial:
<script th:inline="javascript">
/*<![CDATA[*/
var message = /*[[${message}]]*/ ''default'';
console.log(message);
/*]]>*/
</script>
He visto este tipo de cosas funcionar en la naturaleza:
<input type="button" th:onclick="''javascript:getContactId(/''' + ${contact.id} + ''/');''" />
Thymeleaf 3 ahora:
Mostrar una constante:
<script th:inline="javascript"> var MY_URL = /*[[${T(com.xyz.constants.Fruits).cheery}]]*/ ""; </script>
Mostrar una variable:
var message = [[${message}]];
O en un comentario para tener un código JavaScript válido cuando abre su archivo de plantilla de una manera estática (sin ejecutarlo en un servidor).
Thymeleaf llama esto: plantillas naturales de JavaScript
var message = /*[[${message}]]*/ "";
Thymeleaf ignorará todo lo que hemos escrito después del comentario y antes del punto y coma.
Más información: http://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#javascript-inlining
//Use this in java
@Controller
@RequestMapping("/showingTymleafTextInJavaScript")
public String thankYou(Model model){
model.addAttribute("showTextFromJavaController","dummy text");
return "showingTymleafTextInJavaScript";
}
//thymleaf page javascript page
<script>
var showtext = "[[${showTextFromJavaController}]]";
console.log(showtext);
</script>
var message =/*[[${message}]]*/ ''defaultanyvalue'';