使用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

Interesting Posts