thymeleaf模板引擎为前端数据的获取提供了较大的便利,在html标签内可经过th标签加${}表达式访问model里的对象数据。但若是不想经过th标签而是简单地访问model对象数据,或是想在javascript代码块里访问model中的数据,则要使用内联的方法。javascript
好比,咱们能够这样访问对象:html
<p>Hello, [[${session.user.name}]]!</p>
以上代码能够取代下面的通常写法:前端
<p>Hello, <span th:text="${session.user.name}">Sebastian</span>!</p>
Expressions between [[...]] or [(...)] are considered inlined expressions in Thymeleaf。即便用此语法的语句称为“内联”。使用内联的语句的确会更加简洁一些。java
如果想在javascript代码块内直接地使用model的对象值,则必须经过内联来实现。代码以下:ajax
<script type="text/javascript" th:inline="javascript">
/*<![CDATA[*/
var max = /*[[${maxSumOfDateInYear}]]*/ 20;
alert(max);
/*]]>*/
</script>
其中第二、5行为基于XML的转义写法,第3行把内联访问的语句用注释引发来,且后面跟着一个空格20,是指若不存在此对象,则自动设置默认值为20。express
注意以上的javascript内联写法是基于你须要“直接地”使用model对象值的场景。不然还有其它写法,好比简单地声明一个hidden input:后端
<input type="hidden" id="maxSumOfDateInYear" th:value="${maxSumOfDateInYear}"/>
<script type="text/javascript" th:inline="none">
var max = $("#maxSumOfDateInYear").val();
var data = [["2012-05-07", 6], ["2012-04-16", 4]];
alert(max);
alert(data);
</script>
以上第1行声明了一个hidden的maxSumOfDateInYear,而后第3行经过jQuery来间接访问。数组
注意,若在thymeleaf代码里存在第4行的二维数组字面量的写法,则必需要把javascript代码块设置为inline为none的,不然thymeleaf引擎会把此数组的[[也当成了内联语句处理,从而致使后端报错An error happened during template parsing。要么,你就仍是经过hidden间接访问的方式实现。session
或者,也能够经过ajax直接获取内容来实现。但这就属与thymeleaf模板引擎计算过程无关了。app