thymeleaf框架[[${}]]取值格式与layui table渲染的cols冲突问题

1.问题描述

我们都知道thymeleaf框架在js脚本内获取后台的session或者model里面的值是需要用到[[${}]]类似格式的,但是[[]]格式在js中也可以定义为数组,这就导致当layui中table下的cols属性利用[[]]格式存放字段配置时,thymeleaf扫描cols无法识别从而导致程序报错。报错如下:

<script type="text/javascript" th:inline="javascript">
layui.use('table', function(){
  var table = layui.table;
  var id=[[${id}]] //利用thymeleaf获取session或model值

  table.render({
    elem: '#test'
    ,url:'/demo/table/user/'
    ,cellMinWidth: 80 //全局定义常规单元格的最小宽度,layui 2.2.1 新增
    ,cols: [[
      {field:'id', width:80, title: 'ID', sort: true}
      ,{field:'username', width:80, title: '用户名'}
      ,{field:'sex', width:80, title: '性别', sort: true}
      ,{field:'city', width:80, title: '城市'}
      ,{field:'sign', title: '签名', width: '30%', minWidth: 100} //minWidth:局部定义当前单元格的最小宽度,layui 2.2.1 新增
      ,{field:'experience', title: '积分', sort: true}
      ,{field:'score', title: '评分', sort: true}
      ,{field:'classify', title: '职业'}
      ,{field:'wealth', width:137, title: '财富', sort: true}
    ]]
  });
});
</script>

2.解决方法

在cols属性里面添加注释,避开thymeleaf扫描即可。解决如下:

​

<script type="text/javascript" th:inline="javascript">
layui.use('table', function(){
  var table = layui.table;
  var id=[[${id}]] //利用thymeleaf获取session或model值

  table.render({
    elem: '#test'
    ,url:'/demo/table/user/'
    ,cellMinWidth: 80 //全局定义常规单元格的最小宽度,layui 2.2.1 新增
    ,cols: [[//添加注释解决thymeleaf取值格式冲突
      {field:'id', width:80, title: 'ID', sort: true}
      ,{field:'username', width:80, title: '用户名'}
      ,{field:'sex', width:80, title: '性别', sort: true}
      ,{field:'city', width:80, title: '城市'}
      ,{field:'sign', title: '签名', width: '30%', minWidth: 100} //minWidth:局部定义当前单元格的最小宽度,layui 2.2.1 新增
      ,{field:'experience', title: '积分', sort: true}
      ,{field:'score', title: '评分', sort: true}
      ,{field:'classify', title: '职业'}
      ,{field:'wealth', width:137, title: '财富', sort: true}
    ]]
  });
});
</script>

[点击并拖拽以移动]
​

版权声明:本文为qq_38650613原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。