zoukankan      html  css  js  c++  java
  • Layui table 动态数据 渲染( layui is not defined )

    想尝试用一下layui的几个组件,以实现前后端的交互。虽然代码简单,但对于初上手的我,还是有一些小问题,特此记录一下。

    下文以 Layui table 组件为例:

    后端:springboot 2.1.13
    前端:Layui.js

    1. idea创建springboot工程,简单配置如下:application.yml

     

    2. 在官网下载最新的Layui包( https://www.layui.com/ ),然后放入工程的 srcmain esourcesstatic 路径下,如下:

    3. 控制器,如下:

    @Controller
    @RequestMapping("/test")
    public class TestController {
        /**
         * 测试页面  http://localhost:8090/test/table
         * @return
         */
         @RequestMapping(value = "/table", method = RequestMethod.GET)
         public String testTable(){
            return "page/table";
        }
    
        /**
         * 获取table数据
         * @return
         */
        @RequestMapping(value = "/tableData", method = RequestMethod.GET)
        @ResponseBody
        public JSONObject testTableData(){
            //方式一:Object转为JSONObject 
            Employee e1 = new Employee(7369L, "zhang", 800, 20);
            JSONObject jsonObject1 = JSON.parseObject(JSON.toJSONString(e1));
    
            //方式二:直接创建JSONObject 
            JSONObject jsonObject1 = new JSONObject();
            jsonObject1.put("empno", 7369L);
            jsonObject1.put("ename", "zhang");
            jsonObject1.put("salary", 800);
            jsonObject1.put("deptno", 20);
    
            //放入集合
            JSONArray jsonArray = new JSONArray();
            jsonArray.add(jsonObject1);
    
            //返回结果
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("code", 0);
            jsonObject.put("msg", "success");
            jsonObject.put("count", 1);
            jsonObject.put("data", jsonArray);
            
            return jsonObject;
        }
    }

    4. 页面如下:table.html,地址:srcmain esources emplatespage able.html

    在layui官网,直接复制了table的页面代码来用 https://www.layui.com/demo/table.html, 此处修改了field和title

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset='utf-8'>
        <title>Layui</title>
        <meta name='renderer' content='webkit'>
        <meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
        <meta name='viewport' content='width=device-width, initial-scale=1, maximum-scale=1'>
        <!-- 注意 href !!! -->
        <link rel='stylesheet' href='/plugins/layui/css/layui.css' media='all'>
    </head>
    <body>
    <div>zhang</div>
    <table id='test'></table>
    
    <!-- 注意 src!!! -->
    <script src='/plugins/layui/layui.js' charset='utf-8'></script>
    
    <script>
        <!-- 注意 src!!! -->
        layui.use('table', function(){
            var table = layui.table;
    
            table.render({
                elem: '#test'
                ,url:'/test/tableData'  //控制器地址即可
                <!-- 注意 src!!! -->
                ,cols: [  //注意:不要把 [[ 连起来写!!
                    [
                        {field:'empno',  title: '编号'}
                        ,{field:'ename', title: '名称'}
                        ,{field:'salary', title: '工资'}
                        ,{field:'deptno',  title: '部门'}
                    ]
                ]
            });
        });
    </script>
    </body>
    </html>

    5. 遇到的问题:

    1> layui is not defined

    一般是引用的js位置不对,静态资源读取不到。

    springboot 的默认静态资源的路径为:

    spring.resources.static-locations=classpath:/META-INF/resources/, classpath:/resources/, classpath:/static/, classpath:/public/  优先级从高到低。

    (默认配置的 /** 会映射到 /static(或 /META-INF/resources、/public、/resources))

    所以依默认静态资源访问路径(不需要在application.yml专门设置)即可,页面table.html中引用的layui.js地址写为 href='/plugins/layui/css/layui.css' 即可,注意:最前面必须加/  ,引入layui.css同理。虽然此地址在idea中会显示黄色提醒,但没影响。

    2> 回调数据渲染失败

    layui的返回数据有特殊的格式要求,不仅仅返回json就完了,而是要求如下格式:

    JSONObject jsonObject = new JSONObject();
    jsonObject.put("code", 0);
    jsonObject.put("msg", "success");
    jsonObject.put("count", 1);
    jsonObject.put("data", jsonArray);
    必须是这样的json,还要注意的是,其中的data是要渲染的数据(列表有多条数据),类型是JSONArray,
    哪怕只有一条记录,也要放入JSONArray,用JSONArray来给data赋值。

    3> 不要乱用[[ ]]

    在 table.render 中的 cols,不要把 [[ 或 ]] 合在一起写,会被解释称其他含义而报错,要换行写

    6 访问成功:

  • 相关阅读:
    未知高度、宽度,垂直水平居中
    js千分位处理
    浮动与两侧皆自适应布局
    html5 canvas 学习笔记(一)
    全面理解javascript的caller,callee,call,apply概念[转载]
    cocos2dx android运行Luac编译后的lua代码
    cocos2dx android lua文件设置问题
    cocos2dx android resources.ap_ does not exist
    Gink掉过的坑(一):将CCTableView导入到lua中
    数据结构之内部排序个人总结
  • 原文地址:https://www.cnblogs.com/shushengyou/p/13267741.html
Copyright © 2011-2022 走看看