使用Thymeleaf从Spring模型设置一个JavaScriptvariables
我如何从Spring
模型读取一个模型variables并将其设置为一个Javascript?
请注意,我正在使用Thymeleaf
作为模板引擎。
春方:
@RequestMapping(value = "message", method = RequestMethod.GET) public String messages(Model model) { model.addAttribute("message", "hello"); return "index"; }
客户端:
<script> .... var m = ${message}; // not working alert(m); ... </script>
从官方文档 :
<script th:inline="javascript"> /*<![CDATA[*/ var message = [[${message}]]; console.log(message); /*]]>*/ </script>
var message =/*[[${message}]]*/ 'defaultanyvalue';
根据文档 ,有几种方法可以进行内联。
你必须根据情况select正确的方法。
1)简单地把variables从服务器到JavaScript:
<script th:inline="javascript"> /*<![CDATA[*/ var message = [[${message}]]; alert(message); /*]]>*/ </script>
2)将JavaScriptvariables与服务器端variables相结合,例如,您需要在javascript内部创build请求链接:
<script th:inline="javascript"> /*<![CDATA[*/ function sampleGetByJquery(v) { /*[+ var url = [[@{/my/get/url(var1=${#httpServletRequest.getParameter('var1')})}]] + "&var2="+v; +]*/ $("#myPanel").load(url, function() {}); } /*]]>*/ </script>
我无法解决的一种情况 – 那么我需要在模板内调用Java方法内传递JavaScriptvariables(这是不可能的)。
我见过这种事情在野外工作:
<input type="button" th:onclick="'javascript:getContactId(\'' + ${contact.id} + '\');'" />
Thymeleaf 3现在:
-
显示一个常量:
<script th:inline =“javascript”> var MY_URL = /*[[${T(com.xyz.constants.Fruits).cheery}]]*/“”; </ SCRIPT>
-
显示一个variables:
var message = [[$ {message}]];
-
或者在以静态方式打开模板文件(而不在服务器上执行)的情况下,在注释中包含有效的JavaScript代码。
Thymeleaf称之为:JavaScript自然模板
var message = / * [[$ {message}]] * /“”;
Thymeleaf将忽略在评论之后和分号之前所写的所有内容。
更多信息: http : //www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#javascript-inlining