Javascript 无法解析为表达式,该表达式定义了Thymeleaf中的DataTable

Javascript 无法解析为表达式,该表达式定义了Thymeleaf中的DataTable,javascript,jquery,html,datatables,thymeleaf,Javascript,Jquery,Html,Datatables,Thymeleaf,我有一个基本的SpringBoot 2.0.4.0版本应用程序。使用Spring初始值设定项、JPA、嵌入式Tomcat、Thymeleaf模板引擎,并将包作为可执行JAR文件 我在模板中有datatable的这个定义 <script th:inline="javascript"> /*<![CDATA[*/ $.fn.dataTable.ext.errMode = 'throw'; var ajax

我有一个基本的SpringBoot 2.0.4.0版本应用程序。使用Spring初始值设定项、JPA、嵌入式Tomcat、Thymeleaf模板引擎,并将包作为可执行JAR文件

我在模板中有datatable的这个定义

    <script th:inline="javascript">
            /*<![CDATA[*/ 

        $.fn.dataTable.ext.errMode = 'throw';

            var ajaxUrl = /*[[@{${ajaxUrl}}]]*/ "";

                var table = $('#smsEventTable').DataTable( {
                    order: [[ 0, "desc" ]],
                    select: true,
                    bLengthChange: false,
                    stateSave: true,
                    pageLength: 20,
                    ajax: ajaxUrl, 
                       "columns": [
                           { data: 'id' },
                           { data: 'smsId' },
                           { data: 'companyName' },
                           { data: 'description' },
                           { data: 'battery', className: 'col_battery' },
                           { data: 'dateTime' },
                           { data: 'signal' },           
                           { data: 'data' },
                           { data: 'alarm' }
                       ] 
                });

            /*]]>*/
</script>

这里的问题是这个表达式:
顺序:[[0,“desc”]],
。因为这个表达式有两个括号(
[[
]
),所以Thymeleaf试图将它作为一个函数来计算。解决这一问题的最简单方法是通过拆分括号来改变格式:

order: [ [0, "desc"] ],

您还可以将JavaScript分成两个块(在第二个块中禁用内联),如下所示:

<script th:inline="javascript">
    var ajaxUrl = /*[[@{${ajaxUrl}}]]*/ "";
</script>

<script th:inline="none">
/*<![CDATA[*/ 
    $.fn.dataTable.ext.errMode = 'throw';

    var table = $('#smsEventTable').DataTable({
        order: [[0, "desc"]],
        select: true,
        bLengthChange: false,
        stateSave: true,
        pageLength: 20,
        ajax: ajaxUrl, 
           "columns": [
               {data: 'id'},
               {data: 'smsId'},
               {data: 'companyName'},
               {data: 'description'},
               {data: 'battery', className: 'col_battery'},
               {data: 'dateTime'},
               {data: 'signal'},           
               {data: 'data'},
               {data: 'alarm'}
           ] 
    });
/*]]>*/
</script>

var ajaxUrl=/*[[@{${ajaxUrl}]*/';
/**/

按如下方式断开方括号

order: [
   [0, "desc"]
],

这是JavaScript代码。你在节点中有这个吗?它对我有用:)
<script th:inline="javascript">
    var ajaxUrl = /*[[@{${ajaxUrl}}]]*/ "";
</script>

<script th:inline="none">
/*<![CDATA[*/ 
    $.fn.dataTable.ext.errMode = 'throw';

    var table = $('#smsEventTable').DataTable({
        order: [[0, "desc"]],
        select: true,
        bLengthChange: false,
        stateSave: true,
        pageLength: 20,
        ajax: ajaxUrl, 
           "columns": [
               {data: 'id'},
               {data: 'smsId'},
               {data: 'companyName'},
               {data: 'description'},
               {data: 'battery', className: 'col_battery'},
               {data: 'dateTime'},
               {data: 'signal'},           
               {data: 'data'},
               {data: 'alarm'}
           ] 
    });
/*]]>*/
</script>
order: [
   [0, "desc"]
],