Layui是一款免費,開源,輕量級的前端cms框架,適用於企業后端,能快速上手開發,集成了常用的組件,還有完善的文檔和社區。
之前寫一個一個關於數據的table表格顯示 並帶有分頁功能,實現過程遇到了很多問題,現抽空總結一下。
使用之前請先詳細閱讀layer的文檔:http://www.layui.com/doc/modules/layer.html
首先下載最新版的layui文件:
下載完之后引入到自己的項目中,放在根目錄的下面某一個地方:
然后在你要用的jsp頁面上引入相應的js和css:
此時路徑應為你放至layui文件包的路徑,注意路徑不要引入錯誤!
簡單的一個demo頁面:
頁面顯示為:
在此講一下傳入的數據格式:
{"code":0,"msg":"","count":29,"data":[{"id":10000,"username":"user-0",...........
這個是你后台需要返回的數據格式,可以自己定義,參考:https://www.layui.com/demo/table/user/?page=1&limit=30
我自己定義方式為:
首先創建一個返回類型實體類: ResultUtil :
寫相應的get,set方法,然后按照layui定義的返回類型格式寫這個方法的實現類:
其中object就是你要在表格中顯示的數據,count為數據的條數,然后寫相應的方法,sql語句 這些都很簡單,在此不多說,寫完之后
在控制層方法中也就是前台頁面url這個路徑的方法中調用此方法,注意方法的接口http請求類型,默認:get:
然后在前台頁面中使用:
紅圈圈中的這個方法在頁面控制台可以看到你傳入的數據。你傳入的data數據一定要和你頁面上寫的數據一致。
這個是簡單的layui展示table表格的實現過程。
接下來講一講分頁:
layui有自帶的分頁功能,樣式還是很好看的,開啟分頁的方法:http://www.layui.com/demo/table/page.html
開啟之后可以自定義分頁的樣式:http://www.layui.com/demo/table/resetPage.html
此時分頁包括分頁的樣式都已經弄好,但是問題就是我們頁面的數據還是查出來的那么多條,並沒有根據layui定義分頁去顯示,這個怎么去解決?
這個問題就是說的重點:實現table表格數據的分頁:
因為靜態json不支持表格自帶分頁,所以我們要在后台定義好分頁的數據傳入前台頁面。表格設置了page:true
之后,就證明分頁功能啟用了,剩下的就是后台controller中獲得默認傳過去的limit和page兩個參數,根據參數計算獲得當前頁顯示的數據,然后把數據打包為指定的json格式設置返回值就ok了
其實現方法有兩種:
第一種:自定義原生的sql語句分頁:在前台頁面配置的table中開啟分頁以后訪問url路徑的時候會傳過去兩個參數,page和limit。page為當前的頁碼,limit為你定義的分頁條數,這樣可以在后台方法中
接收這兩個參數:
接收之后我們要對page進行重新定義,方便於sql語句的分頁:
這樣之后調用service層方法到mapper文件的sql語句可以直接這樣寫(demo示例):
select 數據,數據,數據,...... from 表名 limit #{pages,jdbcType=INTEGER},#{limit,jdbcType=INTEGER}
這樣之后 頁面就實現分頁了,很簡單的。
接下來說說第二中更為方便的寫法:
就是使用框架的配置:
首先引入相應的jar包:
然后在mybatis-config.xml中配置分頁:
請注意上圖中我用紅色圈圈中的兩個參數,這個兩個很重要,在dao層寫接收page和limit兩個參數的時候需要用到:
不管接受到的參數為什么 注解中一定要用到配置中設定的參數數據,這樣框架才會幫你解析。
配置成功之后 控制層后台只需接受這兩個參數,sql語句只需寫個簡單的查詢就可以了,框架會自動幫你實現分頁。
至此分頁講完。
接下來額外補充一下頁面數據的轉換:
比如說頁面上展示的是個人信息:性別字段數據表中存儲的是int類型0或者1 但是在頁面上需要用男和女展示出來,有兩種實現方式;
第一中很簡單 直接在后台service實現方法中給替換成相應的類型,我主要說第二中頁面中替換:
首先請先仔細閱讀官方開發文檔:http://www.layui.com/doc/modules/table.html#cols
請注意這個字段:
點擊詳見自定義模板:http://www.layui.com/doc/modules/table.html#templet
實現:
在table定義中需要轉義的字段后面加上templet這個參數(模板選擇器):
然后寫templet對應的模板,它可以存放在頁面的任意位置。模板遵循於 laytpl 語法,可讀取到返回的所有數據:
注意兩者的對應關系:
模板中第一個個我只寫了一個“男”,這個只是將數字1轉為為男在頁面上顯示,第一個我加了一個span,這個不僅僅是將0替換成“女”,而且還改變了其顏色。
只要認真閱讀了layui開發文檔這樣都可以實現。