這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
文章來源:http://gf.johng.cn/597435
由於分頁對象預定義的樣式比較有限,有的時候我們想自訂分頁的樣式(標籤輸出),由於分頁對象的的所有方法都是公開的,這便為開發人員自訂分頁樣式提供了非常高的靈活度。開發人員可以通過以下方式實現自訂分頁內容:
- (推薦)對輸出內容進行正則匹配替換實現自訂;
- 根據分頁對象公開的方法自行組織分頁內容實現自訂;
- 也可以自訂一個分頁對象(繼承於原有分頁對象),使用方法重載的方式來實現自訂;
樣本1,使用第一種方式實現分頁自訂:
package mainimport ( "gitee.com/johng/gf/g" "gitee.com/johng/gf/g/os/gview" "gitee.com/johng/gf/g/util/gstr" "gitee.com/johng/gf/g/net/ghttp" "gitee.com/johng/gf/g/util/gpage")// 分頁標籤使用li標籤包裹func wrapContent(page *gpage.Page) string { content := page.GetContent(4) content = gstr.ReplaceByMap(content, map[string]string { "<span" : "<li><span", "/span>" : "/span></li>", "<a" : "<li><a", "/a>" : "/a></li>", }) return "<ul>" + content + "</ul>"}func main() { s := ghttp.GetServer() s.BindHandler("/page/custom2/*page", func(r *ghttp.Request){ page := gpage.New(100, 10, r.Get("page"), r.URL.String(), r.Router.Uri) content := wrapContent(page) buffer, _ := gview.ParseContent(` <html> <head> <style> a,span {padding:8px; font-size:16px;} div{margin:5px 5px 20px 5px} </style> </head> <body> <div>{{.page}}</div> </body> </html> `, g.Map{ "page" : gview.HTML(content), }) r.Response.Write(buffer) }) s.SetPort(10000) s.Run()}
執行後,頁面輸出結果為:
樣本2,使用第二種方式實現分頁自訂:
package mainimport ( "gitee.com/johng/gf/g/os/gview" "gitee.com/johng/gf/g/net/ghttp" "gitee.com/johng/gf/g/util/gpage")// 自訂分頁名稱func pageContent(page *gpage.Page) string { page.NextPageTag = "NextPage" page.PrevPageTag = "PrevPage" page.FirstPageTag = "HomePage" page.LastPageTag = "LastPage" pageStr := page.FirstPage() pageStr += page.PrevPage() pageStr += page.PageBar("current-page") pageStr += page.NextPage() pageStr += page.LastPage() return pageStr}func main() { s := ghttp.GetServer() s.BindHandler("/page/custom/*page", func(r *ghttp.Request) { page := gpage.New(100, 10, r.Get("page"), r.URL.String(), r.Router.Uri) buffer, _ := gview.ParseContent(` <html> <head> <style> a,span {padding:8px; font-size:16px;} div{margin:5px 5px 20px 5px} </style> </head> <body> <div>{{.page}}</div> </body> </html> `, g.Map{ "page" : gview.HTML(pageContent(page)), }) r.Response.Write(buffer) }) s.SetPort(8199) s.Run()}
執行後,頁面輸出結果為: