Javascript:逃避Thymeleaf的双方括号

时间:2018-05-15 16:27:59

标签: javascript datatables thymeleaf

我正在使用Thymeleaf + Datatables.js。

我想在javascript中对我的数据表应用默认排序,如下所示:

<script type="text/javascript" th:inline="javascript" class="init">

/*<![CDATA[*/

$(document).ready(function() {
    $('#myTable').DataTable({
        "order" : [[ 0, 'asc' ]]
    });
});

/*]]>*/

</script>

但是,我得到了由Thymeleaf引起的以下异常:

  

org.thymeleaf.exceptions.TemplateProcessingException:无法解析   表达式:“0,'asc'”

所以即使我将我的js代码放入

/*<![CDATA[*/ ... /*]]>*/

Thymeleaf仍然希望将其解析为表达式。如何逃避双方括号?

2 个答案:

答案 0 :(得分:2)

你可以将它移动到它自己的块中:

<script type="text/javascript" th:inline="none" class="init">
/*<![CDATA[*/
$(document).ready(function() {
    $('#myTable').DataTable({
        "order" : [[ 0, 'asc' ]]
    });
});
/*]]>*/
</script>

<script type="text/javascript" th:inline="javascript" class="init">
/*<![CDATA[*/
// other javascript with thymeleaf variables in it goes here
/*]]>*/
</script>

您可以采用不同的方式格式化订单:

$('#myTable').DataTable({
    "order" : [
      [ 0, 'asc' ]
    ]
});

$('#myTable').DataTable({
    "order" : [ [ 0, 'asc' ] ]
});

答案 1 :(得分:1)

从Thymeleaf 3开始,您还可以将属性th:inline="none"添加到脚本标签(或DOM树中的其他任何标签,如果您想将其应用于所有子标签)。

请参阅:Disabling inlining in the Thymeleaf 3 Doc