gpt4 book ai didi

javascript - 无法解析为在 Thymeleaf 中定义 DataTable 的表达式

转载 作者:行者123 更新时间:2023-11-28 05:12:47 25 4
gpt4 key购买 nike

我有一个基本的 SpringBoot 2.0.4.RELEASE 应用程序。使用 Spring Initializer、JPA、嵌入式 Tomcat、Thymeleaf 模板引擎,并打包为可执行 JAR 文件。

我在模板中定义了一个数据表

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

但是我第一次加载页面时没有数据我得到了这个错误:

Caused by: org.thymeleaf.exceptions.TemplateProcessingException: Could not parse as expression: " 0, "desc" " (template: "/sms/smsList" - line 273, col 12)

最佳答案

这里的问题是这个表达式:order: [[ 0, "desc"]],。因为该表达式有双括号([[]]),Thymeleaf 试图将其计算为 inline expression。 .解决此问题的最简单方法是通过分解括号以不同方式格式化它:

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

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

您也可以像这样将 JavaScript 分成两个 block (在第二个 block 中禁用内联):

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

关于javascript - 无法解析为在 Thymeleaf 中定义 DataTable 的表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51943026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com